SQLSERVER:查询指定表是否有约束,如果有约束就先关闭约束,生成关闭和恢复约束的SQL语句

-- 查询指定表是否有约束,如果有约束就先关闭约束,生成关闭约束的SQL语句,和 恢复外键约束的SQL语句


SET NOCOUNT ON;


-- 1. 目标表清单
DECLARE @TableList TABLE(TableName NVARCHAR(200));
INSERT INTO @TableList(TableName) VALUES
('shukuinfo123'),
('shukuinfo123StoreOrder'),
('shukuinfo123_Update');


PRINT '===================== 禁用外键约束 NOCHECK =====================';
-- 移除DISTINCT,无报错
SELECT
    'ALTER TABLE [' + OBJECT_SCHEMA_NAME(fk.parent_object_id) + '].[' + OBJECT_NAME(fk.parent_object_id) + '] NOCHECK CONSTRAINT [' + fk.name + '];' AS DisableFK_SQL
FROM sys.foreign_keys fk
INNER JOIN @TableList tl ON OBJECT_NAME(fk.parent_object_id) = tl.TableName
ORDER BY OBJECT_NAME(fk.parent_object_id);


PRINT CHAR(10) + '===================== 恢复外键约束 CHECK =====================';
-- 移除DISTINCT,无报错
SELECT
    'ALTER TABLE [' + OBJECT_SCHEMA_NAME(fk.parent_object_id) + '].[' + OBJECT_NAME(fk.parent_object_id) + '] CHECK CONSTRAINT [' + fk.name + '];' AS EnableFK_SQL
FROM sys.foreign_keys fk
INNER JOIN @TableList tl ON OBJECT_NAME(fk.parent_object_id) = tl.TableName
ORDER BY OBJECT_NAME(fk.parent_object_id);

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS