How do I enforce uniqueness in a table?

后端 未结 4 861
慢半拍i
慢半拍i 2020-12-21 11:03

For example, I have to program an enrolment table which has:

  1. enrolment_id
  2. academic_period
  3. results
  4. student_id
  5. subject
  6. <
相关标签:
4条回答
  • 2020-12-21 11:40

    Create a unique constraint on academic_period, student_id, subject
    I'll let you work out the actual SQL

    Note: this is correctly your natural key: enrolment_id is a surrogate added at implementation time because of the database architecture. It isn't mandated in any design or modelling process

    0 讨论(0)
  • 2020-12-21 11:42

    Add a unique constraint. From here:

    To allow naming of a UNIQUE constraint, and for defining a UNIQUE constraint on multiple columns, use the following SQL syntax:

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

    (Modify the above for the column(s) you need to set as unique)

    0 讨论(0)
  • 2020-12-21 11:54

    Add a unique constraint to your table:

    ALTER TABLE yourtable ADD CONSTRAINT constraintname UNIQUE (student_id, subject, academic_period)
    
    0 讨论(0)
  • 2020-12-21 11:58

    You would just get the amount of rows returned from this example query:

    SELECT COUNT(*) FROM enrollment WHERE student_id = 'XYZ' AND subject = 'ABC' AND academic_period = 'DEF'

    If the amount of rows returned is greater than 0, they have already been enrolled in that subject in the academic period.

    0 讨论(0)
提交回复
热议问题