如何写一个触发器,实现这个功能呢,我写的是这样的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触发器 deleteupdate

解决方案 »

  1.   

    delete from ys_yy_d where exists (select * from inserted where ys_yy_d.主键=inserted.主键)
      

  2.   

    或者
    delete from ys_yy_d where 主键 in (select 主键 from inserted) 
      

  3.   

    我是这样理解的:先选出inserted中所有的行,作为条件,用exists判断ys_yy是否有相同的行在inserted里面,存在就删除。
    我的这样理解是对的吗
      

  4.   

    没主键....那就在where中把所有的列都列出来,
      

  5.   

    这样啊 ,也行,还有没有别的sql语句实现我说的这个功能呢
      

  6.   

    触发器可以了,但是还是建议你添加上主键,不然后续操作比较麻烦。2008可以用merge,不过复杂,估计你看不懂