liz*_*y81 1 sql-server-2008 sql-server
我有 2 个带有列名的表WHO,我正在使用这 2 个表创建一个视图,其中FSwho.who = FStasks.who.
如果我在FStaskswhere 中输入一条新记录FStasks.who = LIZ,但我的FSwho.who表上没有记录,那么触发器应该插入LIZ到我的表中。
使用下面的代码,我得到的错误是
无法绑定多部分标识符“fs_tasks.WHO”。(我也试过
inserted.who)
我搜索了互联网,我遇到的大多数解决方案都是关于更改同一张桌子上的值。如何将值插入到完全不同的表中?
ALTER TRIGGER [dbo].[FS_TASKS_TRIG]
ON [dbo].[FS_TASKS]
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Action as char(1);
SET @Action = (CASE
WHEN EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED) THEN 'U' -- Set Action to Updated.
WHEN EXISTS(SELECT * FROM INSERTED) THEN 'I' -- Set Action to Insert.
WHEN EXISTS(SELECT * FROM DELETED) THEN 'D' -- Set Action to Deleted.
ELSE NULL -- Skip. It may have been a "failed delete".
END)
if @Action in ('I','U')
begin
IF NOT EXISTS(SELECT * FROM fs_who where who = WHO) BEGIN
INSERT INTO FS_WHO (WHO)
VALUES (fs_tasks.WHO)
END
end
END
Run Code Online (Sandbox Code Playgroud)
inserted是一张桌子。所以尝试:
INSERT INTO FS_WHO (WHO)
SELECT DISTINCT i.WHO
FROM inserted AS i
WHERE NOT EXISTS (SELECT *
FROM FS_WHO f
WHERE f.WHO = i.WHO);
Run Code Online (Sandbox Code Playgroud)
而且您不需要为此考虑@Action...
| 归档时间: |
|
| 查看次数: |
342 次 |
| 最近记录: |