我仍然試圖得到正確的觸發器,但是當工作時似乎其他開始(失敗)。惱人的..但也教育:-)爲什麼「子查詢返回的值超過1,這是不允許的......」在觸發器中的相同查詢,而不是執行正常查詢
當我執行下面的SQL在MS SQL服務器是成功完成,但是當它在一個AFTER UPDATE觸發器執行的時候失敗,錯誤
消息512 ,級別16,狀態1,過程 TR_PHOTO_AU,第37行子查詢返回 多於1個值。當子查詢遵循= !=,<,< =,>,> =或當子查詢 用作表達式時,這不是 。
SQL;
UPDATE p2
SET p2.esb = '0'
FROM (SELECT TOP(5) p1.esb
FROM SOA.dbo.photos_TEST p1
WHERE p1.esb = 'Q'
ORDER BY p1.arrivaldatetime ASC
) p2
爲什麼不允許在觸發器中使用子查詢作爲表達式?是否有解決方法?
再次感謝, 彼得
感謝Brad,但找到原因。我正在嘗試3天來解決軟件供應商無法/不會/不管/無論什麼問題。我變得馬虎,並將我的更新後觸發器定義爲插入後更新觸發器。解決這個問題也解決了錯誤。 – pcvnes 2010-10-20 12:56:43
@pcvnes,你應該回答你自己的問題,這樣你可以標記爲已被回答。 – Brad 2010-10-20 13:02:28
據我所知,可以看到,我做了我的問題。 – pcvnes 2010-10-21 06:28:57