如何在表格中强制执行唯一性?

时间:2012-05-03 13:52:13

标签: mysql sql

例如,我必须编制一个注册表,其中包含:

  1. enrolment_id
  2. academic_period
  3. 结果
  4. student_id数据
  5. 受试者
  6. 我希望强制确保学生在特定学期内不能多次注册某个科目。 因此,约束应涉及student_id,subject和学期时间列。

    我仍然不确定如何实现这一目标。有什么帮助吗?

4 个答案:

答案 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,则他们已在学期内注册该主题。