Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да деактивирате всички ограничения за проверка и външни ключове за таблица в SQL Server (примери за T-SQL)

Можете да използвате кода по-долу, за да деактивирате всички CHECK и ограничения на външния ключ за конкретна таблица в SQL Server.

Просто заменете TableName с името на приложимата таблица.

ALTER TABLE TableName NOCHECK ОГРАНИЧЕНИЕ ВСИЧКИ

По-долу е даден пример, където правя това и след това проверявам резултата.

Пример 1 – Преглед на ограниченията

Първо, ще разгледам набързо текущата CHECK и ограничения на външния ключ в базата данни, за да видите дали са активирани или деактивирани.

SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM> s_not_trustedFROM> 

Резултат:

+----------------+----------------+----------- ----+-----------------+| Таблица | Ограничение | е_забранено | е_не_доверен ||----------------+----------------+------------ ---+------------------|| ConstraintTest | chkPrice | 0 | 0 || ConstraintTest | chkValidEndDate | 0 | 0 || ConstraintTest | chkTeamSize | 0 | 0 || Професия | chkJobTitle | 0 | 0 |+----------------+----------------+----------- ---+------------------+

Така че в момента има четири CHECK ограничения в базата данни, три от които са за ConstraintTest таблица.

Можем да видим, че всички ограничения са активирани, защото is_disabled е настроен на 0 .

Пример 2 – Деактивиране на ограниченията

Сега ще деактивирам всички ограничения за ConstraintTest таблица:

ПРОМЕНЯ ТАБЛИЦА ОграничениеТест NOCHECK ОГРАНИЧЕНИЕ ВСИЧКИ;

Пример 3 – Проверете резултата

Сега изпълнявам същата заявка от първия пример, за да видя резултата.

SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM> s_not_trustedFROM> 

Резултат:

+----------------+----------------+----------- ----+-----------------+| Таблица | Ограничение | е_забранено | е_не_доверен ||----------------+----------------+------------ ---+------------------|| ConstraintTest | chkPrice | 1 | 1 || ConstraintTest | chkValidEndDate | 1 | 1 || ConstraintTest | chkTeamSize | 1 | 1 || Професия | chkJobTitle | 0 | 0 |+----------------+----------------+----------- ---+------------------+

Както се очакваше, и трите ограничения за ConstraintTest таблицата са деактивирани (защото is_disabled колоната е настроена на 1 за тези ограничения).

Забележете, че не_доверен колоната също е настроена на 1 . Това е важно съображение, особено ако възнамерявате да активирате отново някое от вашите деактивирани ограничения.

Вижте какво трябва да знаете за WITH NOCHECK, когато активирате ограничение CHECK в SQL Server за информация как да възстановите доверието при повторно активиране на вашите ограничения. Информацията в тази статия се отнася и за външни ключове.

Деактивирайте ограниченията поотделно

Ако не искате да деактивирате всички ограничения в таблицата, можете да ги деактивирате поотделно. Вижте как да деактивирате ограничение CHECK в SQL Server и как да деактивирате външен ключ в SQL Server.

Активирайте отново ограниченията

Ако трябва да активирате отново всички ограничения за таблица, вижте Как да активирате ВСИЧКИ ПРОВЕРКИ и ограничения на външния ключ за таблица.

Ако трябва да ги активирате отново поотделно, вижте Как да активирате ограничение CHECK в SQL Server и и Как да активирате външен ключ в SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PIVOT в sql 2005

  2. Трябва да изброите всички тригери в базата данни на SQL Server с име на таблица и схема на таблицата

  3. Как да проверя дали съществува колона в таблица на SQL Server?

  4. NULL стойности в клаузата NOT IN

  5. SQL заявка за получаване на обобщен резултат в разделители на запетая заедно с група по колона в SQL Server