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 使用单数。
Inscriptions
table估计其他栏目也想要,比如铭文date/time,方法等相关信息
您的唯一键需要包含 idClass 和 idStudent,因此任何特定组合都不能重复。
我正在尝试创建一个将数据插入 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 使用单数。
Inscriptions
table估计其他栏目也想要,比如铭文date/time,方法等相关信息
您的唯一键需要包含 idClass 和 idStudent,因此任何特定组合都不能重复。