Foreign-Key
無法在 Postgresql 的表中添加外鍵約束
我正在嘗試在“centresdevote”表中添加“prefectures”表的外鍵。但是我在嘗試將外鍵添加到“centresdevote”表時遇到了這個錯誤。順便說一句,將外鍵添加到我的數據庫中的其他表沒有問題,我似乎無法弄清楚為什麼這個錯誤只針對這個彈出。我正在使用 Postgresql 9.2 並手動為其他表添加了外鍵。我也嘗試使用如下 SQL 程式碼:
ALTER TABLE centresdevote ADD CONSTRAINT objectid FOREIGN KEY (objectid) REFERENCES prefectures (objectid);
這是錯誤
ERROR: insert or update on table "centresdevote " violates foreign key constraint "objectid" DETAIL: Key (objectid)=(10) is not present in table "prefectures".
這是兩個表的結構:
“都道府縣”表:
objectid integer NOT NULL, nomprefecture character varying(70), shape st_geometry, respcommissionrecensement character varying(70), CONSTRAINT prefectures_pkey PRIMARY KEY (objectid)
“centresdevote”表:
objectid integer NOT NULL, arabicname character varying(70), frenchname character varying(70), shape st_point, CONSTRAINT centresdevote_pkey PRIMARY KEY (objectid)
提前致謝!
在表中
centresdevote
,您有一行的值為objectid
10。當您嘗試創建 a時,會檢查表中的列中是否存在與 中的所有行FOREIGN KEY CONSTRAINT
匹配的值。裡面沒有.objectid``prefectures``centresdevote``prefectures``objectid = 10
我建議您閱讀PostgreSQL 文件 - 5.3.5。外鍵和關於外鍵的 W3Schools 頁面。外鍵的全部意義在於它們限制了您可以插入到欄位中的內容。來自 PostgreSQL 文件:
外鍵約束指定一列(或一組列)中的值必須與出現在另一個表的某行中的值匹配。我們說這維護了兩個相關表之間的引用完整性。
添加外鍵不是強制性的,您可以在沒有它的情況下進行各種查詢。