這個問題在這里已經有了答案: Postgresql:有條件的唯一約束 (2 個回答) 18 小時前關閉。
在 Postgres 13.4 中,嘗試創建一個唯一約束,其中汽車表中的記錄在名稱和 user_id 上是唯一的。purchase_at 日期開始為 NULL,但可以在購買汽車后更改為一個值。我運行以下但得到一個語法錯誤:
ALTER TABLE cars
ADD CONSTRAINT cars_user_id_name_purchased_at_key
UNIQUE (user_id, name)
WHERE purchased_at IS NULL
錯誤:
ERROR 42601 (syntax_error) “WHERE”處或附近的語法錯誤
這是什么問題以及如何解決?
uj5u.com熱心網友回復:
WHERE約束定義中不能有子句,但部分唯一索引可以解決問題:
CREATE UNIQUE INDEX ON cars (user_id, name)
WHERE purchased_at IS NULL;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/328565.html
標籤:PostgreSQL
上一篇:postgres函式看不到變數
