【发布时间】:2021-06-24 23:56:53
【问题描述】:
这是我在 Stackoverflow 上的第一个问题,我希望你能帮助我,这将是非常好的 :)
我正在尝试创建一些表,但出现此错误:错误:没有唯一约束匹配引用表“inscription”的给定键
这是我的查询:
CREATE TABLE ue
(
id_ue varchar(30) primary key,
designation varchar(50) NOT NULL,
ects int NOT NULL
);
CREATE TABLE auditeur
(
id_auditeur int primary key,
nom varchar(30) NOT NULL,
prenom varchar(30) NOT NULL,
date_nais varchar(30) NOT NULL
);
CREATE TABLE tarif
(
id_tarif int primary key,
tarif varchar(30) NOT NULL
);
CREATE TABLE inscription
(
annee int,
id_auditeur int,
id_tarif int,
PRIMARY KEY (annee, id_auditeur),
FOREIGN KEY (id_auditeur) REFERENCES auditeur (id_auditeur),
FOREIGN KEY (id_tarif) REFERENCES tarif (id_tarif)
);
CREATE TABLE reglement
(
id_auditeur int,
annee int,
num_ordre int,
montant int NOT NULL,
primary key (id_auditeur, annee, num_ordre),
FOREIGN KEY (id_auditeur) REFERENCES auditeur (id_auditeur),
FOREIGN KEY (annee) REFERENCES inscription (annee)
);
CREATE TABLE inscrire
(
id_auditeur int,
annee int,
id_ue varchar(30),
note1 int,
note2 int,
primary key (id_auditeur, annee, id_ue),
FOREIGN KEY (id_auditeur) REFERENCES auditeur (id_auditeur),
FOREIGN KEY (annee) REFERENCES inscription (annee),
FOREIGN KEY (id_ue) REFERENCES ue (id_ue)
);
应该遵循这个逻辑模型:
这也是数据库的关系模式:
我尝试过的:如果我执行查询直到创建铭文结束它可以工作,但是当我尝试执行最后两个创建时出现问题,因为它们引用了 annee。
我无法添加唯一约束,因为它是针对家庭作业的,我必须插入带有日期 (annee) 的脚本并且有不同的日期 (annee)。如果我这样做,PostgreSQL 会告诉我有问题约束是唯一的。通常如果 annee 是主键,就不需要添加唯一约束了吧?
我真的迷路了..非常感谢帮助我的人:D
【问题讨论】:
标签: database postgresql reference constraints unique-constraint