我正在使用SQL 2008 R2。我有5個複合主鍵使用多個主鍵刪除SQL上的雙精度
(NOID ,CODE_CLIENT,CODE_DEST,DATE_CLOTURE,DATE_CLOTUR_REEL)
在我的桌子上。
我嘗試刪除雙用這樣的語法:
DELETE
FROM [LETTRE_VOIT_FINAL]
WHERE EXISTS
(SELECT NOID ,
CODE_CLIENT,
CODE_DEST,
DATE_CLOTURE,
DATE_CLOTUR_REEL
FROM LETTRE_VOIT_FINAL
GROUP BY NOID ,
CODE_CLIENT,
CODE_DEST,
DATE_CLOTURE,
DATE_CLOTUR_REEL HAVING count(*) > 1)
它刪除所有入口,好在我已經做了備份。
在我剛剛有4個複合主鍵之前,我添加了最後一個DATE_CLOTUR_REEL。因爲主鍵的值不能爲空,所以我把值getdate()
放到這個鍵中。正因爲如此,我無法將全部5個設置爲複合主鍵,因爲我有兩個。 所以現在,我的桌子上沒有主鍵。
這就是爲什麼做這樣的事情的時候,你應該使用事務,以便您的側傾他們如果他們沒有做到你想要的東西,那就回來。 – steoleary 2013-03-18 10:57:19
您沒有四個主鍵。每個表可能有一個* single *主鍵。你*可能*有一個複合主鍵,由4個(你的文本)或5個(你的例子)列組成。 – 2013-03-18 10:58:26
但是,如果你擁有一個聲明的主鍵,那麼就不應該有重複項,所以你需要清楚你的表設置是什麼(也許在你的問題中添加一個「CREATE TABLE」腳本,刪除一些不相關的列,如果需要的話),數據目前的樣子,以及你正在嘗試做什麼。 – 2013-03-18 11:00:07