我们如何从数据库中找到约束的名称。

时间:2015-01-21 12:52:05

标签: sql sql-server-2008-r2

我有表prsl,它具有自动生成的约束名称。我想搜索数据库保存这些名称的位置。     ALTER TABLE [dbo]。[PRSL] DROP CONSTRAINT [PK__PRSL__1C1D47DC0BF1ACC7]

实际上,我想动态地删除这些约束。 例如

SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[PRSL]')

删除表格上的所有约束。

找到时删除约束'

1 个答案:

答案 0 :(得分:1)

如果您愿意显示给定表格的所有约束

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where TABLE_NAME = 'YOUR TABLE NAME'

如果要删除给定表的所有约束,请使用:

DECLARE @database nvarchar(50)
DECLARE @table nvarchar(50)

set @database = 'dotnetnuke'
set @table = 'tabs'

DECLARE @sql nvarchar(255)
WHILE EXISTS(select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where constraint_catalog = @database and table_name = @table)
BEGIN
    select    @sql = 'ALTER TABLE ' + @table + ' DROP CONSTRAINT ' + CONSTRAINT_NAME 
    from    INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
    where    constraint_catalog = @database and 
            table_name = @table
    exec    sp_executesql @sql
END

它对我有用...希望它有所帮助...