由於某種原因,我得到一個錯誤*在我的代碼。我對PostgresSQL很陌生,只是SQL。什麼導致了這個錯誤?錯誤:沒有唯一的約束匹配給定的鍵
*沒有與參考表「tech」的給定鍵匹配的唯一約束。
BEGIN;
CREATE TABLE Person (
person_id SERIAL PRIMARY KEY,
firstname VARCHAR(128),
lastname VARCHAR(128),
email_adr VARCHAR(128),
UNIQUE(person_id, email_adr)
);
CREATE TABLE Phone (
person_id INT REFERENCES Person(person_id),
phone_nr INT PRIMARY KEY,
UNIQUE(phone_nr)
);
CREATE TABLE Tech (
tech_id INT REFERENCES Person(person_id),
username VARCHAR(80) PRIMARY KEY,
password VARCHAR(80) NOT NULL,
location Varchar(128),
UNIQUE(username, tech_id)
);
CREATE TABLE Customer (
customer_id INT REFERENCES Persons(person_id),
addresse VARCHAR(255) NOT NULL,
UNIQUE(customer_id)
);
CREATE TABLE Task (
task_id SERIAL PRIMARY KEY,
payment MONEY,
tech INT REFERENCES Tech(tech_id) NOT NULL,
customer INT REFERENCES Customer(customer_id) NOT NULL,
start_date DATE NOT NULL,
end_dato DATE,
UNIQUE(tech, customer, start_date, end_date)
);
COMMIT;
這不是我所做的嗎? 「UNIQUE(username,tech_id)」 編輯:啊,我明白了。讓我檢查 – Perelan
@ServO不,因爲我在例子**'UNIQUE(username,tech_id)中寫入'意味着這對列應該通過唯一的**。 (1,'John'),(1,'Nataly')在這方面是獨一無二的。只有列tech_id'不是。 –
這解釋了很多。非常感謝你! :) – Perelan