微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误:没有唯一约束匹配给定键的引用表“铭文”

如何解决错误:没有唯一约束匹配给定键的引用表“铭文”

这是我关于 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)
);

它应该遵循这个逻辑模型:

Logic model

这里也是数据库的关系模式:

Relational schema

我的尝试:如果我执行查询直到创建铭文结束它可以工作,但是当我尝试执行最后两个创建时会出现问题,因为它们指的是 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 举报,一经查实,本站将立刻删除。