我對數據庫沒有那麼有經驗,所以對我一無所知。 ;-) 當一次插入多行時,一個非常簡單的FOR INSERT觸發器會一直返回錯誤「Subquery返回多個值」。當我使用像這樣的語句將行插入到表SOA.dbo.photos_TEST中時;子查詢返回的值超過1。在MS SQL 2005觸發器上
INSERT INTO SOA.dbo.photos_TEST (id,length,picture,type,name,value,arrivaldatetime)
SELECT VW.id, ... ,
FROM SOA.dbo.AeosPhotoTEST_VW vw
WHERE ...
插入失敗。但是當我添加一個TOP(1)到SELECT語句時,觸發器不報告錯誤。因此,觸發器中的「SELECT VALUE FROM INSERTED」語句可能會返回INSERTED表中的所有行。我是否應該在觸發器中循環遍歷INSERTED中的所有行?任何建議都是值得歡迎的。
觸發器的當前代碼是;
SELECT @VALUE = (SELECT VALUE FROM INSERTED)
SET NOCOUNT ON
BEGIN
DELETE FROM SOA.dbo.photos_TEST
WHERE (value = @VALUE)
AND (arrivaldatetime < (SELECT arrivaldatetime
FROM INSERTED
WHERE value = @VALUE))
END
你好約翰,改變的是觸發如你所說仍返回「子查詢返回多個值。該......當這是不允許的」,並稱超過1個行時。 – pcvnes 2010-10-19 12:17:35
+1教我一個新的竅門。非常感謝,thx。 – 2010-10-19 12:19:23
@pcvnes,它不應該。你確定你改變了觸發器嗎?你能發佈更新後的腳本嗎? – 2010-10-19 12:22:48