2016-06-09 60 views
-2

我試圖從1表中獲取信息並將其插入另一個表中的記錄。但每次我嘗試使用WHERE子句時都會收到此錯誤。我需要WHERE,因爲我需要來自第一個表的值與第二個表中的相同記錄具有相同的報價編號。SQL觸發器 - 多部分標識符無法綁定

我的代碼:

ALTER TRIGGER InsertQuoteNumber 
ON AccountInfo 
FOR INSERT 
AS 
DECLARE @ShippingIdentity nvarchar(50) 
DECLARE @QuoteNumber nvarchar(50) 
SELECT @QuoteNumber = QuoteNumber FROM AccountInfo 

BEGIN 
UPDATE ShippingInfo SET @QuoteNumber = QuoteNumber 
WHERE AccountInfo.ShippingIdentity = ShippingInfo.ShippingIdentity 
END 
+1

什麼是dbms被使用? –

+1

確保您在運行該代碼之前擁有出色的備份。 –

+0

這是典型的XY問題。 –

回答

1

我一直在每次收到這個錯誤我嘗試使用WHERE子句。

的錯誤是在這裏:

UPDATE ShippingInfo SET @QuoteNumber = QuoteNumber 
WHERE AccountInfo.ShippingIdentity --AccountInfo is not a part of query 
= ShippingInfo.ShippingIdentity 

其實,你是幸運否則你將更新所有行。你的觸發器應該是這樣的:

ALTER TRIGGER InsertQuoteNumber 
ON AccountInfo 
FOR INSERT 
AS 
--may make sense if you guarantee single row insert only 
--DECLARE @ShippingIdentity nvarchar(50) 
--DECLARE @QuoteNumber nvarchar(50) 
--From What Row? 
--SELECT @QuoteNumber = QuoteNumber FROM AccountInfo 

BEGIN 
UPDATE ShippingInfo SET QuoteNumber = i.QuoteNumber 
from ShippingInfo s 
inner join inserted i on s.ShippingIdentity = i.ShippingIdentity 
--no **where** required 
--WHERE AccountInfo.ShippingIdentity = ShippingInfo.ShippingIdentity 
END 
+1

(事實上,你很幸運,否則你會更新所有行......)這就是爲什麼你需要一個很好的備份。原來的海報非常幸運。 –

+0

謝謝你的回覆。但是,當我從我的網站插入我的值時,ShippingInfo表中的QuoteNumber爲NULL。但是,如果我重新運行表單而不刷新我的頁面,則QuoteNumber將被插入到不應該包含該特定QuoteNumber的列中。是否應該在代碼中實現我的代碼? –

+0

這是不同的問題。我是否回答了您最初提問的問題?你最近的評論聽起來像[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –

相關問題