REFERENTIAL_CONSTRAINTS (Transact-SQL)
針對目前資料庫中的每個 FOREIGN KEY 條件約束,各傳回一個資料列。這個資訊結構描述檢視會傳回目前使用者有權限的物件之相關資訊。
若要從這些檢視中擷取資訊,請指定 INFORMATION_SCHEMA.view_name 的完整名稱。
資料行名稱 |
資料類型 |
描述 |
---|---|---|
CONSTRAINT_CATALOG |
nvarchar(128) |
條件約束限定詞。 |
CONSTRAINT_SCHEMA |
nvarchar(128) |
包含條件約束之結構描述的名稱。
重要事項
請勿使用 INFORMATION_SCHEMA 檢視來判斷物件的結構描述。要尋找物件的結構描述,唯一可靠的方式就是查詢 sys.objects 目錄檢視或使用 OBJECT_SCHEMA_NAME 函數。
|
CONSTRAINT_NAME |
sysname |
條件約束名稱。 |
UNIQUE_CONSTRAINT_CATALOG |
nvarchar(128) |
UNIQUE 條件約束限定詞。 |
UNIQUE_CONSTRAINT_SCHEMA |
nvarchar(128) |
包含 UNIQUE 條件約束的結構描述名稱。
重要事項
請勿使用 INFORMATION_SCHEMA 檢視來判斷物件的結構描述。要尋找物件的結構描述,唯一可靠的方式就是查詢 sys.objects 目錄檢視或使用 OBJECT_SCHEMA_NAME 函數。
|
UNIQUE_CONSTRAINT_NAME |
sysname |
UNIQUE 條件約束。 |
MATCH_OPTION |
varchar(7) |
參考條件約束相符狀況。一律傳回 SIMPLE。這表示未定義相符項目。當符合下列條件之一時,狀況就視為相符:
|
UPDATE_RULE |
varchar(11) |
當 Transact-SQL 陳述式違反這個條件約束所定義的參考完整性時,所採取的動作。 傳回下列項目之一:
如果這個條件約束的 ON UPDATE 指定了 NO ACTION,就不會將條件約束所參考的主索引鍵之更新傳播到外部索引鍵。如果主索引鍵的這類更新會因為至少有一個外部索引鍵包含相同的值,而造成參考完整性違規,SQL Server 不會變更父系和進行參考的資料表。SQL Server 也會引發一則錯誤。 如果這個條件約束的 ON UPDATE 指定了 CASCADE,就會將主索引鍵值的變更傳播到外部索引鍵值。 |
DELETE_RULE |
varchar(11) |
當 Transact-SQL 陳述式違反這個條件約束所定義的參考完整性時,所採取的動作。 傳回下列項目之一:
如果這個條件約束的 ON DELETE 指定了 NO ACTION,就不會將條件約束所參考的主索引鍵之刪除傳播到外部索引鍵。如果主索引鍵的這類刪除會因為至少有一個外部索引鍵包含相同的值,而造成參考完整性違規,SQL Server 不會變更父系和進行參考的資料表。SQL Server 也會引發一則錯誤。 如果這個條件約束的 ON DELETE 指定了 CASCADE,主索引鍵值的變更就會自動傳播到外部索引鍵值。 |
範例
下列範例會傳回資料庫的 Sales 結構描述中每個 FOREIGN KEY 條件約束的相關資訊。
USE AdventureWorks;
GO
SELECT CONSTRAINT_SCHEMA, CONSTRAINT_NAME, UNIQUE_CONSTRAINT_SCHEMA, UNIQUE_CONSTRAINT_NAME,
MATCH_OPTION, UPDATE_RULE, DELETE_RULE
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = 'Sales';