PSQL要求唯一约束?

时间:2016-12-05 22:46:10

标签: foreign-keys psql unique-constraint composite-primary-key

所以我尝试创建以下表格,psql不允许我创建这些表格,除非C_Subject表中的UNIQUE约束Curriculum_Subjects

    CREATE TABLE IF NOT EXISTS Curriculum(
      CID SERIAL NOT NULL,
      Curriculum_Name VARCHAR(100),
      Classes_Needed INTEGER,
      Classes_Total INTEGER,
      PRIMARY KEY(CID)
    );


   CREATE TABLE IF NOT EXISTS Class_Subjects(
      C_Subject SERIAL NOT NULL,
      Class_Subject VARCHAR(100),
      PRIMARY KEY(C_Subject)
    );


    CREATE TABLE IF NOT EXISTS Curriculum_Subjects(
      C_Subject SERIAL UNIQUE NOT NULL REFERENCES Class_Subjects(C_Subject),    
      CID SERIAL NOT NULL REFERENCES Curriculum(CID),
      PRIMARY KEY(C_Subject, CID)
    );

然而,我希望我的数据库工作的方式是一个C_Subject可以在许多课程中。所以下面将相同的C_Subject插入两个不同的课程应该是有效的。 CID是不同课程的标识符。

INSERT INTO Curriculum_Subjects(C_Subject, CID)
    VALUES(2,1);

INSERT INTO Curriculum_Subjects(C_Subject, CID)
    VALUES(2,2);

psql不会允许此插入,因为C_Subject具有UNIQUE约束。如果C_Subject UNIQUE属于复合键Curriculum_Subjects,为什么PRIMARY KEY(C_Subject, CID)需要{{1}}?这个插件可以实现吗?

0 个答案:

没有答案