我一直在尝试使用更新触发器来检查主表中的title_id。这就是我所做的:
ALTER TRIGGER [dbo].[EX6] on [dbo].[sales]
INSTEAD OF UPDATE NOT FOR REPLICATION
AS
BEGIN
IF EXISTS(SELECT S.title_id
FROM inserted S
INNER JOIN Titles T On T.title_id = S.title_id)
BEGIN
UPDATE Sales
SET sales.stor_id = inserted.stor_id
, sales.ord_num = inserted.ord_num
, sales.title_id = inserted.title_id
, sales.ord_order = inserted.ord_order,
,sales.qty = inserted.qty
END
然而,当我执行此操作时,我收到以下错误:
the multi-part identifier inserted.stor_id could not be bound
更新命令中使用的其余列发生相同的错误。那么,请你帮我解决这个问题并成功更新数据库中的列。
答案 0 :(得分:2)
您已插入别名为S
,因此您需要在UPDATE
声明
ALTER TRIGGER [dbo].[EX6] on [dbo].[sales]
INSTEAD OF UPDATE NOT FOR REPLICATION
AS
BEGIN
IF EXISTS(SELECT S.title_id
FROM inserted S
INNER JOIN Titles T On T.title_id = S.title_id)
BEGIN
UPDATE st
SET st.stor_id = S.stor_id
, st.ord_num = S.ord_num
, st.title_id = S.title_id
, st.ord_order = S.ord_order
, st.qty = S.qty
FROM Sales AS st
INNER JOIN inserted S ON st.stor_id = S.stor_id
END
我已更新答案,以反映聊天中讨论的更改。