如果兩個表 A 和 B 需要有相互的外鍵參考,則可以在 A 和 B 的創建表陳述句中定義每個外鍵約束。我試圖在 pgAdmin 中執行此操作,但它顯示錯誤。我只想驗證這個說法是真是假。我懷疑為了在子表中添加外鍵參考。它應該有父表。有人可以證實這一點嗎?
uj5u.com熱心網友回復:
是的,你可以有相互的外鍵參考,但你不能只使用create table
. 原因是當你定義第一個表時,第二個表還不存在,所以你不能在外鍵中參考它。
create table A (id serial primary key, Bid serial references B);
create table B (id serial primary key, Aid serial references A);
在創建表 A 處回傳此錯誤:
架構錯誤:錯誤:關系“b”不存在
并且因為A創建失敗,創建表B也回傳錯誤:
架構錯誤:錯誤:關系“a”不存在
相反,您需要另一個步驟。首先創建表 A,然后創建表 B,其外鍵參考表 A,然后將外鍵添加到表 A。現在表 B 存在,您可以參考它。
create table A (id serial primary key);
create table B (id serial primary key, Aid serial references A);
alter table A add Bid serial references B;
https://www.db-fiddle.com/f/gb9vo1fQy8Jty1pGdn8Q7o/0
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/457834.html
下一篇:SQL合并兩個表中的資料