当前位置: 代码迷 >> Sql Server >> 这个触发器如何写?
  详细解决方案

这个触发器如何写?

热度:11   发布时间:2016-04-24 09:49:09.0
这个触发器怎么写???
需求如下:
将A表的字段1数据更新成2时,将更新的这条记录插入到B表(如果B表己存在,则删除后再插入,不存在则直接插入)。
------解决思路----------------------
引用:
Quote: 引用:

CREATE TRIGGER TRG_A_UPDATE
ON A
FOR UPDATE
AS
BEGIN
DECLARE @C1 INT
SELECT @C1=[字段1]FROM INSERTED
IF @C1=2
BEGIN
DELETE FROM B WHERE EXISTS(SELECT 1 FROM INSERTED C WHERE C.[主键]=B.[主键])
INSERT INTO B
SELECT * FROM INSERTED
END
END

如果更新单条,可以这样,你参考下

谢谢了,你这个写的我改了下可以满足我的要求了。顺便问下,你说的更新单条我条是什么意思?我同时更新了2条数据,发现也可以插入到新表

仔细想想,批量也兼容

------解决思路----------------------

-- 把 字段1 = 2 这个规则,写到 where 条件中,
--不然可能会有这样的问题,你更新了两条数据,但是这两条数据的字段1这列,一行 是2 ,一行不是2,该出问题了。
-- 以下语句大部分拷的是 1# ,我很懒。。
CREATE TRIGGER TRG_A_UPDATE
ON A
FOR UPDATE
AS
BEGIN
DELETE FROM B WHERE EXISTS(SELECT 1 FROM INSERTED C WHERE C.[主键]=B.[主键] and 字段1 = 2)
INSERT INTO B
SELECT * FROM INSERTED where 字段 1 = 2 

END
  相关解决方案