sql-server – 如何从所有表中删除所有约束?
发布时间:2020-12-24 16:08:38 所属栏目:MsSql教程 来源:网络整理
导读:我想删除SQL Server数据库中所有表的所有默认约束,检查约束,唯一约束,主键和外键.我知道如何从sys.objects中获取所有约束名称,但是如何填充ALTER TABLE部分? 解决方法 您可以通过将sys.tables.object_id = sys.objects.parent_object_id加入这些对象类型来轻
我想删除SQL Server数据库中所有表的所有默认约束,检查约束,唯一约束,主键和外键.我知道如何从sys.objects中获取所有约束名称,但是如何填充ALTER TABLE部分? 解决方法您可以通过将sys.tables.object_id = sys.objects.parent_object_id加入这些对象类型来轻松地获取此信息.DECLARE @sql NVARCHAR(MAX); SET @sql = N''; SELECT @sql = @sql + N' ALTER TABLE ' + QUOTENAME(s.name) + N'.' + QUOTENAME(t.name) + N' DROP CONSTRAINT ' + QUOTENAME(c.name) + ';' FROM sys.objects AS c INNER JOIN sys.tables AS t ON c.parent_object_id = t.[object_id] INNER JOIN sys.schemas AS s ON t.[schema_id] = s.[schema_id] WHERE c.[type] IN ('D','C','F','PK','UQ') ORDER BY c.[type]; PRINT @sql; --EXEC sys.sp_executesql @sql; PRINT只是用于眼球 – 如果你有很多约束,它可能不会显示整个脚本,因为它限制在8K.在这些情况下,请参阅this tip以了解在运行之前验证脚本的其他方法. 一旦您对输出感到满意,请取消注释EXEC. (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 在同一个VM上运行2个SQL Server 2014实例是否
- SQL:根据其他列中的多个条件计算一列中的不同值
- 分析:Longhorn系统会步微软Linux后尘吗
- 震撼全球:Photoshop CS v8正式发布!
- 数据库 – mysqldump – where with =运算符不能获取所有行
- sql-server – 如何在最小停机时间的情况下将rowversion列添
- HTML表单标记教程(3):输入标记
- 一个Bug损失200亿!如何搭建业务异常检测系统?
- sql-server – 什么时候应该指定PAD_INDEX?
- sql-server – 来自不同进程中相同临时表的锁的死锁