如何从另一个表中引用SQL?

时间:2012-05-03 13:21:51

标签: mysql sql

情况是这样的: 我有工作人员的桌子和课程的另一个。 在课程中,我将有一个名为coordinator的列,它将引用staff_id。 这是因为有些工作人员是协调员,有些人不是,等等。

Staff_id是一个IDENTITY,因此它是自动递增的,我必须确保在课程表中,它不会遵循此自动递增。

我只是不确定如何为这种情况实现检查约束。

2 个答案:

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

您当然可以自由地为约束实现自己的命名约定。