mysql触发器问题

1,创建触发器:t_afterinsert_on_tab1 作用:增加tab1表记录后自动将记录增加到tab2表中 CREATE TRIGGER t_afterinsert_on_tab1 AFTER INSERT ON tab1 FOR EACH ROW BEGIN if new.tab1_id is not null then insert into tab2(tab2_id) values(new.tab1_id);end if;END;2,创建触发器:...
mysql触发器问题
1,创建触发器:t_afterinsert_on_tab1
作用:增加tab1表记录后自动将记录增加到tab2表中

CREATE TRIGGER t_afterinsert_on_tab1
AFTER INSERT ON tab1
FOR EACH ROW
BEGIN
if new.tab1_id is not null then
insert into tab2(tab2_id) values(new.tab1_id);
end if;
END;

2,创建触发器:t_afterdelete_on_tab1
作用:删除tab1表记录后自动将tab2表中对应的记录删去
CREATE TRIGGER t_afterdelete_on_tab1
AFTER DELETE ON tab1
FOR EACH ROW
BEGIN
delete from tab2 where tab2_id=old.tab1_id;
END;

2,创建触发器:t_afterupdate_on_a
作用:修改a表age字段后自动将b表中对应的age字段修改
CREATE TRIGGER t_afterupdate_on_a
AFTER UPDATE ON a
FOR EACH ROW
update b set age=NEW.age where id=NEW.id;2011-05-31
给你个简单的例子
CREATE TABLE a (id int);
CREATE TABLE b(id int);

CREATE TRIGGER TG_a_INSERT AFTER INSERT ON a FOR EACH ROW
BEGIN
INSERT INTO B(id)
VALUES(NEW.id);
END

INSERT INTO a VALUES(1);

SELECT * FROM b;

+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)

可见a中插入的数据被触发到b中了
当然这是INSERT触发器
如果需要DELETE触发器,将INSERT改为DELETE,NEW改为OLD
CREATE TRIGGER TG_A_DELETE AFTER DELETE ON a FOR EACH ROW
BEGIN
INSERT INTO B(id)
VALUES(OLD.id);
END

UPDATE触发器
CREATE TRIGGER TG_A_UPDATE AFTER UPDATE ON a FOR EACH ROW
BEGIN
INSERT INTO B(id)
VALUES(OLD.id);
END2011-05-31
create trigger A_Ins_Del
on A
for insert,delete
as
declare @x int,@y int
select @x=A.改变的属性 from inserted
select @y=A.改变的属性 from deleted
if(@x<>0 or @y<>0)
update B SET B.属性=B.属性+@x or update B set B.属性=B.属性-@y
else
GO2011-05-31
mengvlog 阅读 46 次 更新于 2025-10-29 15:40:42 我来答关注问题0
檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部