首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

小弟我想更新一个表,判断这个更新是不是符合条件,如果不是的,就把更新的行移除到另外一个表中,怎样做呢

2013-02-25 
我想更新一个表,判断这个更新是不是符合条件,如果不是的,就把更新的行移除到另外一个表中,怎样做呢?如何写

我想更新一个表,判断这个更新是不是符合条件,如果不是的,就把更新的行移除到另外一个表中,怎样做呢?
如何写一个触发器,实现这个功能呢,我写的是这样的



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,不过复杂,估计你看不懂

热点排行