SQL 如何不插入重复值

SQL How to not insert duplicated values

我正在尝试创建一个将数据插入 table 寄存器的过程,但我不想重复第二个参数,这是 table

CREATE TABLE Inscription
(
    idClass INT references tb_class,
    idStudent INT references tb_student,
)

想法是一个学生(idStudent)可以在不同的class中注册,但不能在同一个class(idClass)中注册,我尝试添加idStudent 列中的唯一约束,但只允许学生注册一个 class.

您希望在 table 上创建一个包含 idClass 和 idStudent 列的约束。

创建该约束后,尝试插入重复项 class/student 将导致出现错误。

由于您的 table 似乎不包含主键,您最好将该约束设为主键。

注意:您没有告诉您正在使用哪个 RDBMS,因此无法为您提供要使用的确切语法...

我总是建议所有 table 都有一个数字主键。此外,您的外键引用不正确。而你想要做的是添加一个唯一约束。

确切的语法取决于数据库。以下是 SQL 服务器:

CREATE TABLE Inscriptions (
    idInscription int identity(1, 1) primary key
    idClass int references tb_classes(idClass),
    idStudent int references tb_students(idStudnt)
    unique (idClass, idStudent)
);

请注意,我将 table 命名为实体的 复数 ,但 id 使用单数。

Inscriptionstable估计其他栏目也想要,比如铭文date/time,方法等相关信息

您的唯一键需要包含 idClass 和 idStudent,因此任何特定组合都不能重复。