Lui*_*dor 10 sql triggers sql-server-2008
我正在尝试创建一个触发器来更新存储库中的联系人信息.
CREATE TRIGGER contacts_f_tr
ON contacts_f
AFTER UPDATE
AS
BEGIN
---
---Update repository data
---
IF UPDATE (mail)
BEGIN
UPDATE mails
SET contact = inserted.name, mail = inserted.mail
WHERE mails.idcontact IN (SELECT mail FROM deleted) AND mails.tablecontact = 2
END
END
Run Code Online (Sandbox Code Playgroud)
我对此很新,我得到了这个错误:
The multi-part identifier "INSERTED.name" could not be bound.
The multi-part identifier "INSERTED.mail" could not be bound.
Run Code Online (Sandbox Code Playgroud)
mar*_*c_s 16
你错过了FROM Inserted你的UPDATE陈述 - 试试这个:
CREATE TRIGGER contacts_f_tr
ON contacts_f
AFTER UPDATE
AS
BEGIN
---
---Update repository data
---
IF UPDATE (mail)
BEGIN
UPDATE mails
SET contact = inserted.name, mail = inserted.mail
FROM Inserted <<==== add this line here!
WHERE mails.idcontact IN (SELECT mail FROM deleted) AND mails.tablecontact = 2
END
END
Run Code Online (Sandbox Code Playgroud)
此外 - 一旦你包括那个伪表,你应该以某种方式引用它/加入其他东西....
更新:好吧,WHERE如果你将Inserted伪表添加到等式中,你可能想要添加一些额外的子句- 这究竟完全取决于你的要求,我不知道 - 但它可能是类似的
WHERE mails.idcontact IN (SELECT mail FROM deleted)
AND mails.tablecontact = 2
AND mails.MailId = Inserted.MailId
Run Code Online (Sandbox Code Playgroud)
或类似的东西(以避免UPDATE声明中的笛卡儿产品).
| 归档时间: |
|
| 查看次数: |
11957 次 |
| 最近记录: |