使用更新触发器
问题描述:
我一直在尝试使用更新触发器来检查主表中的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
同样的错误。因此,可以ü请帮助我解决这个成功更新数据库中列..
答
你插入的别名是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
我已更新答案以反映聊天中讨论的更改。
不...还是一样的错误.. – user838359
对不起,第一次没仔细看。我更新了我的查询。你需要加入插入(可能标题)表到你的更新声明,以带来数据 –
没有..仍然是相同的错误 – user838359