例如,我必须编制一个注册表,其中包含:
我希望强制确保学生在特定学期内不能多次注册某个科目。 因此,约束应涉及student_id,subject和学期时间列。
我仍然不确定如何实现这一目标。有什么帮助吗?
答案 0 :(得分:14)
为您的表添加唯一约束:
ALTER TABLE yourtable ADD CONSTRAINT constraintname UNIQUE (student_id, subject, academic_period)
答案 1 :(得分:3)
在academic_period, student_id, subject
上创建unique constraint
我将让您解决实际的SQL
注意:这是正确您的自然键:enrolment_id
是由于数据库体系结构而在实现时添加的代理。在任何设计或建模过程中都没有强制要求
答案 2 :(得分:1)
添加唯一约束。来自here:
允许命名UNIQUE约束,以及定义UNIQUE 对多列的约束,使用以下SQL语法:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)
(修改您需要设置为唯一的列的上述内容)
答案 3 :(得分:0)
您只需获取此示例查询返回的行数:
SELECT COUNT(*) FROM enrollment WHERE student_id = 'XYZ' AND subject = 'ABC' AND academic_period = 'DEF'
如果返回的行数大于0,则他们已在学期内注册该主题。