[英]Relation “table” already exists
我正在構建一個SQL數據庫並遇到錯誤“關系'性別'已經存在”。
根據發布類似問題的SO用戶,我嘗試過:注釋掉約束以查看是否存在干擾,將所有對serial / all主鍵的引用更改為整數以匹配類型,如果存在則丟棄所有表。 無論我做什么,錯誤都是一樣的,所以我發布了原始代碼。 我真的可以使用一些指導來解決這個案例中的問題。 謝謝!
CREATE TABLE sexes (
id serial PRIMARY KEY,
string text NOT NULL
);
CREATE TABLE humans (
id serial PRIMARY KEY UNIQUE NOT NULL,
forename text NOT NULL,
surname text NOT NULL,
birthdate date,
sex_id integer REFERENCES sexes(id)
);
CREATE TABLE marriages (
id serial PRIMARY KEY UNIQUE NOT NULL,
partner_1_id integer REFERENCES humans(id),
partner_2_id integer REFERENCES humans(id),
marriage_date date NOT NULL,
divorce_date date NOT NULL,
CONSTRAINT divorced CHECK (marriage_date <= divorce_date),
CONSTRAINT marry_self CHECK (partner_1_id <> partner_2_id)
);
您可以使用IF NOT EXISTS
子句:
如果已存在具有相同名稱的關系,請不要拋出錯誤。 在這種情況下發出通知。 請注意,無法保證現有關系與已創建的關系類似。
CREATE TABLE IF NOT EXISTS sexes (
id serial PRIMARY KEY,
string text NOT NULL
);
這真的很奇怪,因為如果在創建新表之前存在這些表,則會丟棄一個全新的錯誤。
如果要刪除表,則必須按正確的順序執行:
DROP TABLE IF EXISTS marriages;
DROP TABLE IF EXISTS humans;
DROP TABLE IF EXISTS sexes;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.