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 阅读 32 次 更新于 2025-09-09 11:04:34 我来答关注问题0
  •  翡希信息咨询 mysql存储过程 和 触发器的优缺点 问题

    触发器的缺点: 复杂性增加:触发器在特定事件发生时自动执行,这可能导致数据库逻辑的复杂性增加,难以调试和维护。 性能影响:触发器的执行时机和触发条件可能导致数据库性能下降,特别是在高并发场景下。 调试困难:由于触发器是自动执行的,且往往涉及多个表和复杂的业务逻辑,因此在出现问题时调试起来相...

  • 有几种方法可以解决这些问题。首先,不要将触发器与事务一起使用,使用触发器时单独进行相关操作。其次,使用“READ-COMMITTED”隔离级别,可以阻止系统读取未提交的数据,从而避免脏读。最后,设置触发器执行完后立即提交事务,可以避免出现故障无法进行修改的情况。尽管MySQL触发器在数据库设计和管理方面具有...

  • 解决方法:修改触发器名称或删除已有的同名触发器。2. 创建触发器权限不足 在MySQL中,创建触发器需要具有CREATE TRIGGER权限。如果当前用户没有该权限,将无法创建触发器。此时,我们需要检查当前用户的权限设置,并赋予其CREATE TRIGGER权限。以下是一个示例SQL语句,其中将当前用户的权限设置为可以创建触发...

  • 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的性能产生影响,但这种影响既可能是正面的,也可能是负面的,具体取决于使用的合理性和系统情况。存储过程的影响: 正面影响: 降低应用负载:存储过程允许将复杂的数据库操作封装在一个可重用的单元中,减少了应用服务器和数据库服务器之间的交互次数,从而降低了网络开销和...

檬味博客在线解答立即免费咨询

mySQL相关话题

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