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

Sådan returneres alle deaktiverede CHECK-begrænsninger i SQL Server (T-SQL-eksempel)

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

Eksempel 1 – Returner kun deaktiveret CHECK-begrænsninger

Denne forespørgsel returnerer kun den deaktiverede CHECK begrænsninger i den aktuelle database. Det returnerer begrænsningsnavnet, navnet på tabellen, som det er anvendt på, og begrænsningens definition.

SELECT 
  OBJECT_NAME(parent_object_id) AS 'Table',
  name AS 'Constraint',
  definition
FROM sys.check_constraints
WHERE is_disabled = 1;

Resultat:

+----------------+-----------------+-------------------------------+
| Table          | Constraint      | definition                    |
|----------------+-----------------+-------------------------------|
| ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate])      |
| Occupation     | chkJobTitle     | ([JobTitle]<>'Digital Nomad') |
+----------------+-----------------+-------------------------------+

Dette forespørger sys.check_constraints 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 vil returnere alle aktiverede CHECK begrænsninger, skal du blot ændre 1 til 0 .

Eksempel 2 – Returner alle CHECK-begrænsninger

Følgende forespørgsel returnerer alle CHECK begrænsninger for den aktuelle database (ikke kun de deaktiverede). Denne gang returnerer jeg is_disabled kolonne for at demonstrere, hvor den forrige forespørgsel fik sin værdi fra:

SELECT 
  OBJECT_NAME(parent_object_id) AS 'Table',
  name AS 'Constraint',
  is_disabled, 
  is_not_trusted
FROM sys.check_constraints;

Resultat:

+----------------+-----------------+---------------+------------------+
| Table          | Constraint      | is_disabled   | is_not_trusted   |
|----------------+-----------------+---------------+------------------|
| ConstraintTest | chkPrice        | 0             | 0                |
| ConstraintTest | chkValidEndDate | 1             | 1                |
| ConstraintTest | chkTeamSize     | 0             | 0                |
| Occupation     | chkJobTitle     | 1             | 1                |
+----------------+-----------------+---------------+------------------+

Jeg har også inkluderet is_not_trusted kolonne i denne forespørgsel. Det er klogt at være opmærksom på denne værdi, fordi en begrænsning kan forblive upålidelig, selv efter den er blevet genaktiveret. For en detaljeret diskussion (og eksempler) af dette flag, se Hvad du bør vide om MED NOCHECK, når du aktiverer en CHECK-begrænsning i SQL Server.


  1. Søg efter "hele ord match" med SQL Server LIKE-mønster

  2. Indsæt CLOB i Oracle-databasen

  3. Er der nogen, der ved, hvilken krypteringsteknik JDeveloper/SQL Developer bruger til at bevare legitimationsoplysninger?

  4. Gør, ikke ødelægge, SQL Server-ydeevne