Sql server 2005 比较触发器sql server 2005中两个表中的两条记录

Sql server 2005 比较触发器sql server 2005中两个表中的两条记录,sql-server-2005,Sql Server 2005,我希望,如果删除的表和插入的表具有相同的记录,那么我不会更新另一个表。所以,请告诉我如何比较两个不同表中删除和插入的具有相同结构的两行 请帮我提供示例代码 谢谢您必须测试每一列 INSERT OtherTable (keycol, col1, col2, ...) SELECT I.keycol, I.Col1, I.Col2, .. FROM INSERTED I JOIN DELETED D On I.keycol = D.keycol WHERE

我希望,如果删除的表和插入的表具有相同的记录,那么我不会更新另一个表。所以,请告诉我如何比较两个不同表中删除和插入的具有相同结构的两行

请帮我提供示例代码


谢谢

您必须测试每一列

INSERT OtherTable (keycol, col1, col2, ...)
SELECT
     I.keycol, I.Col1, I.Col2, ..
FROM
     INSERTED I
     JOIN
     DELETED D On I.keycol = D.keycol
WHERE
     I.col1 <> I.col1
     OR
     I.col2 <> I.col2
     OR
     ISNULL(I.col3, 0) <> ISNULL(I.col3, 0) --nullable columns
     OR
     ...
插入其他表(keycol,col1,col2,…)
挑选
I.keycol,I.Col1,I.Col2。。
从…起
插入I
参加
已删除I.keycol=D.keycol上的D
哪里
I.col1 I.col1
或
I.col2 I.col2
或
ISNULL(I.col3,0)ISNULL(I.col3,0)——可为空的列
或
...
你也可以使用

插入。。。
挑选
I.keycol,I.Col1,I.Col2。。
从…起
插入I
参加
已删除I.keycol=D.keycol上的D
哪里
HashBytes('SHA1',CAST(I.col1作为nvarchar)+I.col2+等)
HashBytes('SHA1',CAST(D.col1作为nvarchar)+D.col2+等)
不是100%可靠,请使用

插入。。。
挑选
I.keycol,I.Col1,I.Col2。。
从…起
插入I
参加
已删除I.keycol=D.keycol上的D
哪里
校验和(I*)校验和(D*)

您必须测试每一列

INSERT OtherTable (keycol, col1, col2, ...)
SELECT
     I.keycol, I.Col1, I.Col2, ..
FROM
     INSERTED I
     JOIN
     DELETED D On I.keycol = D.keycol
WHERE
     I.col1 <> I.col1
     OR
     I.col2 <> I.col2
     OR
     ISNULL(I.col3, 0) <> ISNULL(I.col3, 0) --nullable columns
     OR
     ...
插入其他表(keycol,col1,col2,…)
挑选
I.keycol,I.Col1,I.Col2。。
从…起
插入I
参加
已删除I.keycol=D.keycol上的D
哪里
I.col1 I.col1
或
I.col2 I.col2
或
ISNULL(I.col3,0)ISNULL(I.col3,0)——可为空的列
或
...
你也可以使用

插入。。。
挑选
I.keycol,I.Col1,I.Col2。。
从…起
插入I
参加
已删除I.keycol=D.keycol上的D
哪里
HashBytes('SHA1',CAST(I.col1作为nvarchar)+I.col2+等)
HashBytes('SHA1',CAST(D.col1作为nvarchar)+D.col2+等)
不是100%可靠,请使用

插入。。。
挑选
I.keycol,I.Col1,I.Col2。。
从…起
插入I
参加
已删除I.keycol=D.keycol上的D
哪里
校验和(I*)校验和(D*)
INSERT ...
SELECT
     I.keycol, I.Col1, I.Col2, ..
FROM
     INSERTED I
     JOIN
     DELETED D On I.keycol = D.keycol
WHERE
     CHECKSUM(I.*) <> CHECKSUM(D.*)