我在创建外键字段的约束时遇到问题,因此只有在外键链接到包含特定属性的行时才能输入外键。
为了更好地了解我的意思,我创建了以下示例。 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
函数,因此我不确定如何定义约束。
答案 0 :(得分:0)
据我所知,您不能对此任务使用检查约束。您必须在费用表中使用触发器进行插入和更新。