REFERENTIAL_CONSTRAINTS (Transact-SQL)
Contiene una riga per ogni vincolo FOREIGN KEY del database corrente. Questa vista dello schema restituisce informazioni sugli oggetti per i quali l'utente corrente dispone di autorizzazioni.
Per recuperare informazioni da queste viste, specificare il nome completo di INFORMATION_SCHEMA.view_name.
Nome colonna |
Tipo di dati |
Descrizione |
---|---|---|
CONSTRAINT_CATALOG |
nvarchar(128) |
Qualificatore del vincolo. |
CONSTRAINT_SCHEMA |
nvarchar(128) |
Nome dello schema che contiene il vincolo.
Importante
Non utilizzare viste INFORMATION_SCHEMA per determinare lo schema di un oggetto. L'unica modalità affidabile per cercare lo schema di un oggetto consiste nell'eseguire una query sulla vista del catalogo sys.objects o sulla funzione OBJECT_SCHEMA_NAME.
|
CONSTRAINT_NAME |
sysname |
Nome del vincolo. |
UNIQUE_CONSTRAINT_CATALOG |
nvarchar(128) |
Qualificatore del vincolo UNIQUE. |
UNIQUE_CONSTRAINT_SCHEMA |
nvarchar(128) |
Nome dello schema che contiene il vincolo UNIQUE.
Importante
Non utilizzare viste INFORMATION_SCHEMA per determinare lo schema di un oggetto. L'unica modalità affidabile per cercare lo schema di un oggetto consiste nell'eseguire una query sulla vista del catalogo sys.objects o sulla funzione OBJECT_SCHEMA_NAME.
|
UNIQUE_CONSTRAINT_NAME |
sysname |
Vincolo UNIQUE. |
MATCH_OPTION |
varchar(7) |
Condizioni referenziali di corrispondenza con il vincolo. Restituisce sempre SIMPLE, a indicare che non è definita alcuna corrispondenza. La condizione viene considerata una corrispondenza se si verifica una delle situazioni seguenti:
|
UPDATE_RULE |
varchar(11) |
Azione eseguita se un'istruzione Transact-SQL viola l'integrità referenziale definita dal vincolo. Restituisce una delle operazioni seguenti:
Se nell'opzione ON UPDATE si specifica NO ACTION per il vincolo, l'aggiornamento della chiave primaria a cui viene fatto riferimento nel vincolo non viene propagato alla chiave esterna. Se l'aggiornamento di una chiave primaria comporta una violazione dell'integrità referenziale perché almeno una chiave esterna contiene lo stesso valore, SQL Server non modifica le tabelle padre e di riferimento. SQL Server genererà inoltre un errore. Se nell'opzione ON UPDATE si specifica CASCADE per il vincolo, tutte le modifiche apportate al valore della chiave primaria vengono propagate automaticamente al valore della chiave esterna. |
DELETE_RULE |
varchar(11) |
Azione eseguita se un'istruzione Transact-SQL viola l'integrità referenziale definita dal vincolo. Restituisce una delle operazioni seguenti:
Se in ON DELETE si specifica NO ACTION per il vincolo, l'eliminazione nella chiave primaria a cui viene fatto riferimento nel vincolo non viene propagata alla chiave esterna. Se l'eliminazione di una chiave primaria comporta una violazione dell'integrità referenziale perché almeno una chiave esterna contiene lo stesso valore, SQL Server non modifica le tabelle padre e di riferimento. SQL Server genererà inoltre un errore. Se nell'opzione ON DELETE si specifica CASCADE per il vincolo, tutte le modifiche apportate al valore della chiave primaria vengono propagate automaticamente al valore della chiave esterna. |
Esempi
Nell'esempio seguente vengono restituite informazioni relative a ogni vincolo FOREIGN KEY nello schema Sales del database.
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';