【发布时间】:2014-02-06 11:42:01
【问题描述】:
我有两张桌子
A)
Table A
ID | val |
1. 1 m
2. 2 n
3. 1 o
4 1 p
5. 2 q
Table B
ID | val
所以我有一个要求,当任何行插入到表 A 中时,相同的数据会在表 B 中更新。我正在尝试使用触发器来执行此操作。我的触发器看起来像
CREATE Trigger tr_ForInserts
ON A
FOR INSERT
AS
BEGIN
SET NOCOUNT ON;
insert into B values(NEW.ID,NEW.Val);
END
我面临的问题是我将如何识别表 A 中的哪一行被插入,因为我有单个 ID 的重复条目。我将如何检测在调用触发器后插入的确切行。查询“插入B值(NEW.ID,New.Val)”中的参数应该是什么.....这些新值应该是什么?
【问题讨论】:
-
insert into B(ID,Val) select ID,Val from inserted- 但如果它只是第一个表的副本,我会询问为什么第二个表存在。 -
我和 OP 有同样的问题,在我的情况下,表 A 被用作缓存,并且每晚都会从其中删除一些记录。为了确保我不必关闭整个服务以确保没有记录被删除而不出现在表 B 中,这似乎是最合乎逻辑的答案。
标签: sql sql-server database triggers