簡體   English   中英

外鍵上的SQL約束

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM