我正在使用PostgreSQL 9.2並需要在列上添加條件約束。基本上,我想確保當其他兩列具有特定值時,列是錯誤的。Postgres 9.2 - 添加條件約束檢查
gid | int_unsigned | not null default 0
realm | character varying(255) | not null default ''::character varying
grant_update | smallint_unsigned | not null default (0)::smallint
grant_delete | smallint_unsigned | not null default (0)::smallint
例子:
alter table node_access add constraint block_anonymous_page_edit
check (grant_update = 0 WHERE (gid = 1 AND realm = 'nodeaccess_rid'));
什麼,這是應該做的是確保grant_update等於0時,GID是1和境界= nodeaccess_rid。但是,我認爲不是做我想做的事情,而是試圖讓所有專欄模仿這些價值觀。實質上,它試圖確保grant_update始終爲0,gid始終爲1,並且領域始終爲nodeaccess_rid。我得到的錯誤是:
ERROR: check constraint "block_anonymous_page_edit" is violated by some row
編輯
我認爲這會被這種大幹快上的更新觸發的功能。
編輯
我添加了一行,到上面的問題,因此更新了以下注釋的認可的解決方案。
'int_unsigned'和'smallint_unsigned'是Postgres的不存在類型。請清理你的問題。 –
不存在或不存在,這就是我們的數據庫如何滾動。目前的問題是正確的。 – thepriebe