MySQL如何用触发器实现新增时删除最后一条数据

2025-02-25 15:13:39
推荐回答(4个)
回答1:

首先mysql 只支持3种触发器
1 DELETE 2 INSERT 3 UPDATE
其他的MySQL语句不支持触发器,所以你第二个需求不能用触发器实现。
其次是 非常遗憾,MYSQL中触发器中不能对本表进行 insert ,update ,delete 操作,以免递归循环触发。所以你第一个需求不能在insert前删除本表数据
对于update 能用set 进行操作替换,insert与delete只能借助第二张表才能实现需要的目的。

回答2:

我做了一个测试,这样在删除记录时报错,而不能删除,你看可不可以
delimiter $
create procedure rb()
begin
rollback;
end $
create trigger trigger1 before delete on table
for each now
begin
if old.xxx=XXX then
call rb ;
end if ;
end $

回答3:

使用delete 触发器格式:
CREATE trigger tri_update
on tablename
for delete
as
begin
--sql code
end

例:
CREATE trigger tri_update
on tablename1 --触发的表名
for delete
as
begin
declare @del_id varchar(40)
select @del_id = id from deleted --tablename1 中删除的数据保存在 deleted 中
delete tablename2 where id = @del_id --同步删除tablename2中数据
end

回答4:

MySQL的触发器不支持对本表操作的,你只能换种思路,在业务逻辑代码去处理这个事情,希望对你有帮助