对外键的SQL约束

时间:2015-03-07 23:02:51

标签: sql foreign-keys check-constraints

我在创建外键字段的约束时遇到问题,因此只有在外键链接到包含特定属性的行时才能输入外键。

为了更好地了解我的意思,我创建了以下示例。 Employee实体表包含Grade字段,该字段可以是' S'对于高级员工,或者J'对于初级员工。在Expenses表中,我希望将ApprovedBy字段中的所有条目限制为具有EmpNo字段的Grade字段,其中包含' S'在Employee表中。

CREATE TABLE Employee
(EmpNo INT PRIMARY KEY,
FirstName VARCHAR(15),
LastName VARCHAR(15),
Grade CHAR(1),
CONSTRAINT chk_ValidGrade CHECK (Grade IN ('J','S'))
)

CREATE TABLE Expenses
(ExpenseId INT IDENTITY(1,1) PRIMARY KEY,
Amount FLOAT,
ApprovedBy INT FOREIGN KEY REFERENCES Employee(EmpNo),
)

我本能地希望使用连接或其他关系代数函数来执行此操作。但是,我的理解是您无法在SELECT函数中使用CHECK函数,因此我不确定如何定义约束。

1 个答案:

答案 0 :(得分:0)

据我所知,您不能对此任务使用检查约束。您必须在费用表中使用触发器进行插入和更新。