我想更新一个表,判断这个更新是不是符合条件,如果不是的,就把更新的行移除到另外一个表中,怎样做呢?
如何写一个触发器,实现这个功能呢,我写的是这样的
CREATE TRIGGER update_zt
on ys_yy_d
FOR UPDATE
AS
declare @zt1 int
select @zt1=zt
from inserted
if @zt1=1
begin
insert into zyc select * from inserted
delete from ys_yy_d where exists (select * from inserted)--把表中跟新过的行删除
但是这样写的结果却是把所有的表都删除了,为什么会这样呢
insert
触发器?
delete
update
------解决方案--------------------delete from ys_yy_d where exists (select * from inserted
where ys_yy_d.主键=inserted.主键)
------解决方案--------------------或者
delete from ys_yy_d where 主键 in (select 主键 from inserted)
------解决方案--------------------没主键....那就在where中把所有的列都列出来,
------解决方案--------------------触发器可以了,但是还是建议你添加上主键,不然后续操作比较麻烦。2008可以用merge,不过复杂,估计你看不懂