SQL3的触发器是一个能由系统自动执行对数据库修改的语句。
触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。
触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。
触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。
语法:
CREATE
TRIGGER `jony_keer`.`ins_account` AFTER INSERT
ON `jony_keer`.`t_account`
FOR EACH ROW BEGIN
INSERT INTO `t_user`(`userid`,`cellphone`,`account_psd`) VALUES (new.`account_id`,new.`cellphone`,new.`account_psd`);
END$$
TRIGGER 触发器
`jony_keer`.`ins_account` 触发器名称 jony_keer是我的数据库名字 ins_account 才是实际的触发器名称
AFTER 表示 执行条件,有BEFORE(之前 ) AFTER(之后)
INSERT ON 表示在执行了 插入操作 ,有INSERT/UPDATE/DELETE 三种
`jony_keer`.`t_account` 接下来的这个是表示触发器所在的表(可以理解为 触发器在t_account 表插入一组出具后执行)
FOR EACH ROW BEGIN 固定于法 后面跟你要做的事情例如我要做的事情是在t_user表中插入
`userid`,`cellphone`,`account_psd` 三个记录
INSERT INTO `t_user`(`userid`,`cellphone`,`account_psd`) VALUES (new.`account_id`,new.`cellphone`,new.`account_psd`);
咦! new 是什么玩意。。。
好吧! new 其实就是t_account 表中插入的数据 我们把 t_account 表中插入的 account_id cellphone account_psd 赋值给t_user表中的 userid cellphone account_psd ,OK!这样一个简单的触发器就做好了。
-----------------------------------------------------------------------------------------------------------------