Disable and enable Foreign Key and Check Constraints

Foreign Key and Check Constraints can be disabled or enabled when required.

To disable a constraint use this code:

USE Database_name
GO
ALTER TABLE Table_name
NOCHECK CONSTRAINT Constraint_name
GO

To disable all table constraints:

USE Database_name
GO
ALTER TABLE Table_name
NOCHECK CONSTRAINT ALL
GO

To enable a disabled constraint with checking the existing rows use this code:

USE Database_name
GO
ALTER TABLE Table_name
WITH CHECK CHECK CONSTRAINT Constraint_name
GO

To enable all disabled table constraints with checking the existing rows:

USE Database_name
GO
ALTER TABLE Table_name
WITH CHECK CHECK CONSTRAINT ALL
GO

If you enable a constraint without checking the existing rows (WITH NOCHECK), SQL Server will mark the constraint as “not trusted”. Trusted constraints help optimizer to get optimized plan and performance.
To see if you have untrusted constraints in your database run:

SELECT *
from sys.check_constraints
WHERE is_not_trusted = 1

SELECT *
from sys.foreign_keys
WHERE is_not_trusted = 1

To list all Check constraints in a database run:
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'CHECK'

To see what Check constraints are disabled run:
SELECT name, is_disabled
FROM sys.check_constraints

To list all Foreign key constraints in a database run:
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY'

To see what Foreign keys are disabled run:
SELECT name, is_disabled
FROM sys.foreign_keys


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值