触发器是一个被指定关联到一个表的数据对象,触发器是不需要调用的,当对一个表的特别事件出现时,它会被激活。触发器的代码也是由声明式和过程式的sql语句组成的,因此在存储过程使用的语句也可以在触发器的定义中使用。当前的触发器版本不太稳定。
CREAT TRIGGER trigger_name trigger_time trigger_event
ON tab_name FOR EACH ROW trigger_stmt
trigger_name:触发器的名称,触发器在当前数据库中必须具有唯一的名称。
trigger_time:触发时间的时刻,有两个选项:AFTER BEFORE 以表示触发器是在激活它的语句之前或之后触发。
Trigger_event : 触发事件,指明了激活触发器的程序的语句类型。
Insert:将新行插入表时激活触发器(insert、loaddata、replace)语句。
注:同一个表不能拥有两个具有相同触发时刻和事件的触发器。
For each row:这个声明用来指定,对于触发事件影响的每一行,都要激活触发器工作。
触发器:和存储过程比较
1、 共同点
针对表的操作(SQL语句集合)
2、 区别点
不需要调用
触发器在当前版本里不太稳定,不建议在有重要数据的数据库里使用
约束:
目的:保证数据的安全(独立性、共享性)排除数据冗余性;
域完整性约束(列):数据类型、格式、值域范围(enum 、set)、是否为空、主键、自动增长等;