Поделиться через


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. Это означает, что не определено никакого соответствия. Предполагается, что условие соответствует ограничению, если выполняется одно из следующих требований.

  • Хотя бы одно значение столбца внешнего ключа равно NULL.

  • Все значения столбца внешнего ключа не равны NULL, и в таблице первичного ключа имеется строка, имеющая тот же ключ.

UPDATE_RULE

varchar(11)

Операция принимается, если инструкция языка Transact-SQL нарушает ссылочную целостность, определенную этим ограничением.

Возвращает одно из следующих значений.

  • NO ACTION

  • CASCADE

  • SET NULL

  • SET DEFAULT

Если на ON UPDATE для этого ограничения указывается NO ACTION, обновление первичного ключа, на который выполняется ссылка в ограничении, не будет распространяться на внешний ключ. Если такое обновление первичного ключа будет вызывать нарушение ссылочной целостности, так как, по крайней мере, один внешний ключ содержит такое же значение, SQL Server не будет выполнять изменений в родительских и ссылающихся на них таблицах. SQL Server также сформирует сообщение об ошибке.

Если на ON UPDATE для этого ограничения указывается CASCADE, любое изменение первичного ключа автоматически распространяется на значение внешнего ключа.

DELETE_RULE

varchar(11)

Операция принимается, если инструкция Transact-SQL нарушает ссылочную целостность, определенную этим ограничением.

Возвращает одно из следующих значений.

  • NO ACTION

  • CASCADE

  • SET NULL

  • SET DEFAULT

Если на ON DELETE для этого ограничения указывается NO ACTION, удаление на первичном ключе, на который выполняется ссылка в ограничении, не будет распространяться на внешний ключ. Если такое удаление первичного ключа будет вызывать нарушение ссылочной целостности, так как, по крайней мере, один внешний ключ содержит такое же значение, SQL Server не будет выполнять изменений в родительских и ссылающихся на них таблицах. SQL Server также сформирует сообщение об ошибке.

Если на ON DELETE для этого ограничения указывается CASCADE, любое изменение значения первичного ключа автоматически распространяется на значение внешнего ключа.

Примеры

В следующем примере возвращаются сведения о каждом ограничении FOREIGN KE в схеме Sales базы данных.

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';