触发器

   

触发器:

  和存储过程比较

1、  共同点

针对表的操作(SQL语句集合)

2、  区别点

不需要调用

 触发器在当前版本里不太稳定,不建议在有重要数据的数据库里使用 

约束:

     目的:保证数据的安全(独立性、共享性)排除数据冗余性;

      域完整性约束(列):数据类型、格式、值域范围(enum 、set)、是否为空、主键、自动增长等;

      实体完整性约束(行):自己整理

     用户自定义约束:

      例如:年龄 int  0-100

     参照完整性约束:外键

     

练习:使用触发器完成check约束

1、  创建触发器

语法:

   create  procedure 名称(参数)

   begin 

     流程控制语句

     SQL语句集合

End

 

 

   create trigger    名称 触发时间(after|before) 触发事件(insert、update、delete)

   on  表名 for  each  row  

   begin

       局部变量、用户变量等;

流程控制语句;

       SQL语句集合;

       Call  存储过程名();

End

 

练习1:对t1创建触发器,执行插入语句后,将用户变量str赋值“working”;

练习2:对t1(字段s1)创建触发器,删除数据后,将t2(字段s2)里对应的记录同步删除;

 第一步:创建触发器

 create trigger t1_delete after delete on t1for each row

  delete from t2 where s2=OLD.s1;

 第二步:激活触发器

  delete from t1;

 第三步:验证结果

  Select * from t2;

 

 

练习3:创建表t3(s3 char(8)),该字段对记录的要求为,必须以’A’为开头

    例如:insert into t3 values(‘Ax’);

     使用触发器来实现该约束

     Insert来验证

 

 

 

删除触发器:

   Show triggers;

   Drop trigger   trigger_name;

 

 

练习4、

t1(s1 int)

t2(s2 int)

记录:30,60,90

当t1表里修改数据后小于60,则在t2表将对应记录改为0;

                  大于60,………………………………2;

 

 

 

 

CREATE TRIGGERT1_UPDATE AFTER UPDATE ON

T1 FOR EACH ROW

UPDATE T2 SETS2=0;

 

 

注意:同一张表进行更新可不可以使用after?为什么?

 

事务、用户(创建、权限分配)、数据的导入导出、安全等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值