SQL如何不插入重复的值

时间:2018-12-02 18:53:39

标签: sql insert-update

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

align_of::<S>() >= align_of::<String>()

这个想法是,一个学生(CREATE TABLE Inscription ( idClass INT references tb_class, idStudent INT references tb_student, ) )可以在各个班级中注册,但不能在同一班级(idStudent)中注册,我试图在idStudent列中添加唯一约束,但这仅允许一个学生注册一个班级。

3 个答案:

答案 0 :(得分:1)

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

确切的语法取决于数据库。以下是针对SQL Server的:

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)
);

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

Inscriptions表可能还需要其他列,例如题词的日期/时间,方法和其他相关信息。

答案 1 :(得分:0)

您正在寻找在表上同时包含idClass和idStudent列的约束。

创建约束后,尝试插入重复的班级/学生将导致引发错误。

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

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

答案 2 :(得分:0)

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