2011-02-04 113 views
2

我有以下查詢更新表記錄設置新的外鍵,如果該外鍵和外鍵2尚不存在。這應該很好,但是,我該如何修改以刪除特定的pkID記錄,如果它存在的話?插入,如果不存在,但刪除,如果它存在

表結構:

+----------------+ 
| table   | 
+----------------+ 
| pkID   | 
| foreignKey  | 
| foreignKey2 | 
+----------------+ 

查詢:

UPDATE table a 
SET a.foreignKey = 2 
WHERE a.pkID = 1234 
AND NOT EXISTS (
    SELECT 1 
    FROM table b 
    WHERE b.foreignKey = 2 
    AND b.foreignKey2 = a.foreignKey2 
) 
+0

您插入,如果它不存在,不更新。 – 2011-02-04 21:50:19

+0

所以你想做一個破壞性的upsert? `MERGE`在2008年會有幫助,但在2005年.. – RichardTheKiwi 2011-02-04 22:02:31

回答

0

你需要MERGE。看一看here(有一個例子有相同的任務)

4

你可以刪除它是否存在,只有插入(而不是更新,因爲記錄不存在被刪除)否則。但不清楚第三個值應該是什麼。

DELETE tbl where pkID = 1234; 
if @@ROWCOUNT = 0 
    INSERT tbl(foreignKey, pkID, foreignKey2) 
    VALUES (2, 1234, ??)