[英]SQL constraint on a foreign key
我在為外鍵字段創建約束時遇到問題,因此只有在該外鍵鏈接到包含特定屬性的行時才能輸入外鍵。
為了更好地理解我的意思,我創建了以下示例。 Employee
實體表包含一個Grade
字段,對於高級員工,可以為'S',對於初級員工可以為'J'。 在“ Expenses
表中,我想將“ ApprovedBy
Employee
”字段中的所有條目限制為“ Employee
表中“ Grade
字段包含“ S”的那些EmpNo
值。
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),
)
我本能地希望使用聯接或其他關系代數函數來執行此操作。 但是,我的理解是您不能在CHECK
函數中使用SELECT
函數,因此我不確定如何定義約束。
據我所知,您不能為此任務使用檢查約束。 您必須使用觸發器在“費用”表中進行插入和更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.