我正在使用Oracle Database 12c企業版。如何確保在SQL的另一個表中沒有設置外鍵?
我有三個表:
table producer (
pid int primary key,
name varchar2(50)
);
table movie (
mid int primary key,
pid varchar2(50),
name varchar2(50)
);
table moviecoproducers (
mid int,
pid int
);
在電影表中的PID,例如在moviecoproducers表的PID和中期是通過適當的外鍵引用。另外,moviecoproducers表中的mid和pid值的組合是唯一的。
我現在必須確保沒有生產者在電影表中被引用爲(主要)生產者,並且在同一部電影的moviecoproducer中間表中作爲共同生產者。我創建了一個觸發器來做到這一點,但現在我問自己,如果我要重新設計我的表結構,是否會有更簡單的解決方案(例如檢查約束)。
我是否只需要觸發器是因爲設計不好,因爲我不知道如何以不同的/更好的方式做到這一點。
將** moviecoproducers **重命名爲** movieproducer **並添加'status'(主或不是)字段。現在你可以把所有制作者放到那裏,並從** movie **中刪除'pid'。現在,您可以控制所有內容而無需觸發器 –
Touché。你是絕對正確的。有時很難看到樹木的木材。 :-) 發表您的評論爲答案... – Lonkey
PM PM說。但是,您仍然需要SOMETHING來確保不超過一個生產者被顯示爲任何給定中期的「主要」。建議PM建議這不是自動的。 – mathguy