2017-07-31 104 views
2

冉:重複鍵值違反唯一約束 - 但沒有這樣的價值觀

truncate table tableA restart identity CASCADE; 

插入新的約束:

ALTER TABLE tableA ADD CONSTRAINT constraint UNIQUE (col1, col2); 

現在得到:

ERROR: duplicate key value violates unique constraint "constraint" 
Key (col1, col2)=(123, "Monday") already exists 

即使沒有這種組合

tableA還引用(具有外鍵列)到tableB,但未以任何方式進行更改。

幫助讚賞。

+0

你的意思tableA參考表B?繼承?你是否嘗試過'從tableA中選擇*' –

+0

你能提供一個最小的腳本來重現這個嗎?我想這個腳本會創建一個表格,添加一個約束,然後插入一些數據。 – Andreas

+0

通常嘗試創建[MCVE](https://stackoverflow.com/help/mcve)的行爲會指出問題出在哪裏。 – Andreas

回答

0

在查詢下面運行會確認您是否有重複的值。

SELECT col1, col2, COUNT(*) 
FROM tableA 
GROUP BY col1, col2 
HAVING COUNT(*) > 1 

如果它返回行,那麼唯一的約束失敗是預期的。

+0

考慮到他在添加約束之前截斷了此引用表和任何引用表,所以不會被期望。 –

相關問題