我沒有任何想法,爲什麼我收到此錯誤: -什麼導致「子查詢返回多個值...」錯誤?
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
我試圖運行此查詢: -
ALTER TABLE Test1 NOCHECK CONSTRAINT ALL
ALTER TABLE Test2 NOCHECK CONSTRAINT ALL
UPDATE Test1
SET ID= '05f6c6b4-63ff-45b2-a5e2-920d5dce3e45'
WHERE ID = '05e6c6b4-63ff-45b2-a5e2-920d5dce3e45';
UPDATE Test2
SET ID = '05f6c6b4-63ff-45b2-a5e2-920d5dce3e45' ,
SpecID = NULL ,
RefLastName = 'Dummy' ,
RefFirstName = 'First Name' ,
RefMiddleName = NULL ,
RefPhone1 = '111444444' ,
RefPhone2 = '2121222' ,
RefFax = '222222' ,
RefEmail = '[email protected]'
WHERE
RefID = '05e6c6b4-63ff-45b2-a5e2-920d5dce3e45'
ALTER TABLE Test1 WITH CHECK CHECK CONSTRAINT ALL
ALTER TABLE Test2 WITH CHECK CHECK CONSTRAINT ALL
感謝您的線索。錯誤是因爲觸發器。順便說一句,我同意這是一個不好的做法。但我認爲這就是我如何實現將舊數據庫與新數據庫同步的任務(更新了一個表格結構的巨大變化)。在新數據庫中,所有GUID都是新的。 :( – Jango 2009-10-14 15:37:58
我強烈建議你考慮改變你的觸發來處理多個更新或提高一個更有意義的錯誤,如果多行是在子選擇。 – 2009-10-14 15:40:47
他一定是上FK約束雙方修改的列。只有這樣,才能做到如果沒有禁用它們(即我能想到的,假設NOT NULL列)是使表A的新條目,更新表B到點到一個新的條目,然後刪除A. – 2009-10-14 15:40:48