我有一個表「富」,看起來像Postgres的:如何防止INSERT在特殊情況下
ID | NAME
------+----------------------------
123 | PiratesAreCool
254 | NinjasAreCoolerThanPirates
和第二表「酒吧」
SID | ID | created | dropped
------+------+------------+-----------
9871 | 123 | 03.24.2009 | 03.26.2009
9872 | 123 | 04.02.2009 |
bar.ID
是一個參考(國外鍵)到foo.ID
。
現在我想阻止你可以插入一個新的記錄到'欄',當有一個記錄具有相同的ID和bar.dropped爲空記錄。
所以,當「酒吧」看起來像上面
INSERT INTO BAR VALUES ('9873','123','07.24.2009',NULL);
應該被禁止,但
INSERT INTO BAR VALUES ('9873','254','07.24.2009',NULL);
應該被允許(因爲沒有「打開」欄中記錄爲「NinjasAreCoolerThanPirates 「)。
我該怎麼做? 我希望我的問題很清楚,有人可以幫助我。
對空列的唯一索引不會這樣的。 – Draemon 2009-07-24 14:36:30
是的,更新了答案。不知道這只是Postgres的事情,我記得它在其他地方工作。 – 2009-07-24 14:52:19
好吧,經過一些測試「在條形碼(id)上創建唯一索引ix_open_bar,其中drop爲null;」似乎是最好的解決方案。謝謝。 – sloth 2009-07-24 15:00:46