如何解决错误:没有唯一约束匹配给定键的引用表“铭文”
这是我关于 Stackoverflow 的第一个问题,我希望你能帮助我,那会非常好:)
我正在尝试创建一些表,但出现此错误:错误:没有唯一约束匹配给定键的引用表“铭文”
这是我的查询:
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 (annee) REFERENCES inscription (annee)
);
CREATE TABLE inscrire
(
id_auditeur int,id_ue varchar(30),note1 int,note2 int,id_ue),FOREIGN KEY (annee) REFERENCES inscription (annee),FOREIGN KEY (id_ue) REFERENCES ue (id_ue)
);
它应该遵循这个逻辑模型:
这里也是数据库的关系模式:
我的尝试:如果我执行查询直到创建铭文结束它可以工作,但是当我尝试执行最后两个创建时会出现问题,因为它们指的是 annee。
我无法添加唯一约束,因为它用于作业,我必须插入带有日期(annee)的脚本并且有不同的日期(annee)。如果我这样做,Postgresql 会告诉我有问题约束唯一。通常,如果 annee 是主键,则不需要添加唯一约束,对吗?
我真的迷路了..非常感谢帮助我的人:D
解决方法
问题是这样的:
FOREIGN KEY (annee) REFERENCES inscription (annee)
在 inscription
表中,您有:
PRIMARY KEY (annee,id_auditeur)
这符合唯一约束条件,但您的 FOREIGN KEY REFERENCE 仅尝试匹配 inscription
PRIMARY KEY 的一半。要使其工作,请尝试:
更新
FOREIGN KEY (annee,id_auditer) REFERENCES inscription (annee,id_auditer)
然后你可以摆脱:
FOREIGN KEY (annee) REFERENCES inscription (annee)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。