情况是这样的: 我有工作人员的桌子和课程的另一个。 在课程中,我将有一个名为coordinator的列,它将引用staff_id。 这是因为有些工作人员是协调员,有些人不是,等等。
Staff_id是一个IDENTITY,因此它是自动递增的,我必须确保在课程表中,它不会遵循此自动递增。
我只是不确定如何为这种情况实现检查约束。
答案 0 :(得分:2)
我必须确保在课程表中,它不会遵循此自动增量。
您是否只是表示您不希望课程表中的coordinator
字段自动增加?除非你告诉它,否则它不会。
例如,这两个表可以正常工作:
CREATE TABLE Staff
(
`staff_id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(64),
PRIMARY KEY (`staff_id`)
)
CREATE TABLE Courses
(
`course_id` INT NOT NULL AUTO_INCREMENT,
`coordinator_id` INT NOT NULL,
`coursename` VARCHAR(64),
PRIMARY KEY (`course_id`),
INDEX `coordid` (`coordinator_id`)
)
当然,正如GarethD所说,你可以另外添加约束来保证coordinator_id被正确填写并且相应的记录存在于工作人员中。
答案 1 :(得分:1)
如果我正确理解您的要求,您可以向表中添加一个外键约束,以便它自己引用:
ALTER TABLE Staff
ADD CONSTRAINT FK_Staff_Coordinator FOREIGN KEY (Coordinator)
REFERENCES Staff (StaffID)
<强> ADENDUM 强>
我想我误解了你的要求,我错过了关于课程表的部分。所以现在我认为课程表需要链接回员工表,在这种情况下命令将是:
ALTER TABLE Course
ADD CONSTRAINT FK_Course_Coordinator FOREIGN KEY (Coordinator)
REFERENCES Staff (StaffID)
您当然可以自由地为约束实现自己的命名约定。