情况是这样的:我有一张桌子供员工使用,另一张桌子供课程使用。当然,我将有一个名为 coordinator 的列,它将引用 staff_id。这是因为有些员工是协调员,有些不是,等等。
Staff_id 是一个 IDENTITY,因此它是自动递增的,我必须确保在课程表中,它不会遵循这个自动递增。
我只是不确定如何为这种情况实施检查约束。
我必须确保在课程表中,它不会遵循这个自动增量。
您只是说您不希望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 正确填写并且相应的记录存在于人员中。
如果我正确理解您的要求,您可以向表中添加外键约束,以便它引用自身:
ALTER TABLE Staff
ADD CONSTRAINT FK_Staff_Coordinator FOREIGN KEY (Coordinator)
REFERENCES Staff (StaffID)
附录
我想我误解了你的要求,我错过了关于课程表的部分。所以现在我认为课程表需要链接回人员表,在这种情况下,命令将是:
ALTER TABLE Course
ADD CONSTRAINT FK_Course_Coordinator FOREIGN KEY (Coordinator)
REFERENCES Staff (StaffID)
您当然可以自由地为约束实现自己的命名约定。