我正在尝试创建一个将数据插入到寄存器表中的过程,但是我不想重复第二个参数,这就是该表
align_of::<S>() >= align_of::<String>()
这个想法是,一个学生(CREATE TABLE Inscription
(
idClass INT references tb_class,
idStudent INT references tb_student,
)
)可以在各个班级中注册,但不能在同一班级(idStudent
)中注册,我试图在idStudent列中添加唯一约束,但这仅允许一个学生注册一个班级。
答案 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,因此任何特定的组合都无法重复。