外键上的SQL约束

外键上的SQL约束,sql,foreign-keys,check-constraints,Sql,Foreign Keys,Check Constraints,我在为外键字段创建约束时遇到问题,因此只有当外键链接到包含特定属性的行时,才能输入外键 为了更好地理解我的意思,我创建了以下示例。Employee实体表包含一个Grade字段,对于高级员工可以是“S”,对于初级员工可以是“J”。在Expenses表中,我想将ApprovedBy字段中的任何条目限制为EmpNo值,这些值在Employee表中有一个Grade字段,其中包含“S” CREATE TABLE Employee (EmpNo INT PRIMARY KEY, FirstName VARC

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

为了更好地理解我的意思,我创建了以下示例。
Employee
实体表包含一个
Grade
字段,对于高级员工可以是“S”,对于初级员工可以是“J”。在
Expenses
表中,我想将
ApprovedBy
字段中的任何条目限制为
EmpNo
值,这些值在
Employee
表中有一个
Grade
字段,其中包含“S”

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),
)

我本能地想使用连接或其他关系代数函数来实现这一点。但是,我的理解是,您不能在
检查
函数中使用
选择
函数,因此我不确定如何定义约束。

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

您使用的是哪种产品?