sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan returneres alle deaktiverede udenlandske nøglebegrænsninger i SQL Server (T-SQL-eksempel)

Hvis du har brug for at returnere en liste over alle fremmednøglebegrænsninger, der er blevet deaktiveret i en SQL Server-database, kan du køre T-SQL-koden nedenfor.

Eksempel 1 – Returner kun deaktiverede udenlandske nøglebegrænsninger

Denne forespørgsel returnerer kun de deaktiverede fremmednøglebegrænsninger i den aktuelle database. For dette eksempel returnerer jeg kun navnet på begrænsningen sammen med dens deaktiverede og betroede status.

SELECT 
  name AS 'Constraint',
  is_disabled,
  is_not_trusted
FROM sys.foreign_keys
WHERE is_disabled = 1;

Resultat:

+------------------------+---------------+------------------+
| Constraint             | is_disabled   | is_not_trusted   |
|------------------------+---------------+------------------|
| FK_BandMember_Band     | 1             | 1                |
| FK_BandMember_Musician | 1             | 1                |
+------------------------+---------------+------------------+

Dette forespørger sys.foreign_keys systemvisning. Vi ved, at det kun returnerer deaktiverede begrænsninger, fordi WHERE klausul specificerer kun rækker, der har is_disabled kolonne sat til 1 .

Hvis du kun vil returnere aktiveret fremmednøglebegrænsninger, skal du blot ændre 1 til 0 .

Bemærk, at is_not_trusted flag er også sat til 1 for disse handicappede begrænsninger. Det skyldes, at systemet ikke kan garantere, at begrænsningen har kontrolleret alle data. Dette giver mening, fordi deaktivering af en begrænsning åbner muligheden for, at ugyldige data kan komme ind i databasen uden at blive kontrolleret.

Her er den samme forespørgsel igen, men denne gang inkluderer jeg tabellen og den refererede tabel for hver begrænsning:

SELECT 
  name AS 'Constraint',
  OBJECT_NAME(parent_object_id) AS 'Table',
  OBJECT_NAME(referenced_object_id) AS 'Referenced Table',
  is_disabled,
  is_not_trusted
FROM sys.foreign_keys
WHERE is_disabled = 1;

Resultat:

+------------------------+------------+--------------------+---------------+------------------+
| Constraint             | Table      | Referenced Table   | is_disabled   | is_not_trusted   |
|------------------------+------------+--------------------+---------------+------------------|
| FK_BandMember_Band     | BandMember | Band               | 1             | 1                |
| FK_BandMember_Musician | BandMember | Musician           | 1             | 1                |
+------------------------+------------+--------------------+---------------+------------------+

Eksempel 2 – Returner alle begrænsninger for fremmednøgle

Følgende forespørgsel returnerer alle fremmednøglebegrænsninger for den aktuelle database (ikke kun de deaktiverede):

SELECT 
  name AS 'Constraint',
  is_disabled,
  is_not_trusted
FROM sys.foreign_keys;

Resultat:

+--------------------------------+---------------+------------------+
| Constraint                     | is_disabled   | is_not_trusted   |
|--------------------------------+---------------+------------------|
| FK_BandMember_Band             | 1             | 1                |
| FK_BandMember_Musician         | 1             | 1                |
| FK_MembershipPeriod_BandMember | 0             | 0                |
+--------------------------------+---------------+------------------+

  1. Brug af JShell i Java 9 i NetBeans 9.0, del 4

  2. Opdeling af strengen i sql server

  3. En oversigt over jobplanlægningsværktøjer til PostgreSQL

  4. isolering af en understreng i en streng før et symbol i SQL Server 2008