我在这里为我正在开发的数据库编写一些约束,我想知道我是否可以执行以下操作:

ALTER TABLE Course
ADD CONSTRAINT cs_level
CHECK (clevel in ('P','I','II','III'))

……而不是这个:
ALTER TABLE Course
ADD CONSTRAINT cs_level
CHECK (clevel = 'P' OR clevel = 'I' OR clevel = 'II' OR clevel = 'III')

最佳答案

即使mysql强制了CHECK约束,我仍然会创建一个COURSE_LEVEL表:
COURSE_LEVEL_CODE,varchar(3),主键
COURSE_LEVEL_DESCRIPTION,可变字符(120)
…并在COURSE表的clevel列上创建外键约束:

ALTER TABLE COURSE
ADD FOREIGN KEY (clevel) REFERENCES COURSE_LEVEL(COURSE_LEVEL_CODE)

10-05 21:34