ERROR: there is no unique constraint matching given keys for referenced table "inscription"
ERROR: there is no unique constraint matching given keys for referenced table "inscription"
这是我关于 Whosebug 的第一个问题,我希望你能帮助我,这真的很好:)
我正在尝试创建一些 table,但出现此错误:错误:没有唯一约束匹配给定键以供参考 table“题词”
这是我的查询:
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)
);
它应该遵循这个逻辑模型:
Logic model
这里也是数据库的关系模式:
Relational schema
我试过的方法:如果我执行查询直到铭文创建结束,它就可以工作,但是当我尝试执行最后两个创建时出现问题,因为它们引用了 annee。
我不能添加唯一约束,因为它是作业,我必须插入一个带有日期 (annee) 的脚本,并且有不同的日期 (annee)。如果我这样做,PostgreSQL 告诉我有唯一约束的问题。通常,如果 annee 是主键,则不需要添加唯一约束,对吗?
我真的迷路了..非常感谢那些会帮助我的人:D
问题是这样的:
FOREIGN KEY (annee) REFERENCES inscription (annee)
在 inscription
table 你有:
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)
这是我关于 Whosebug 的第一个问题,我希望你能帮助我,这真的很好:)
我正在尝试创建一些 table,但出现此错误:错误:没有唯一约束匹配给定键以供参考 table“题词”
这是我的查询:
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)
);
它应该遵循这个逻辑模型:
Logic model
这里也是数据库的关系模式:
Relational schema
我试过的方法:如果我执行查询直到铭文创建结束,它就可以工作,但是当我尝试执行最后两个创建时出现问题,因为它们引用了 annee。
我不能添加唯一约束,因为它是作业,我必须插入一个带有日期 (annee) 的脚本,并且有不同的日期 (annee)。如果我这样做,PostgreSQL 告诉我有唯一约束的问题。通常,如果 annee 是主键,则不需要添加唯一约束,对吗?
我真的迷路了..非常感谢那些会帮助我的人:D
问题是这样的:
FOREIGN KEY (annee) REFERENCES inscription (annee)
在 inscription
table 你有:
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)