【发布时间】:2011-07-02 14:12:21
【问题描述】:
我希望删除我拥有的所有表的约束。 由于这在 SQL Server 中是不可能的,因此我创建了一个脚本(基于在线找到的内容),它作为 Select 的结果动态创建 drop 语句:
SELECT 'ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME + '] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']'
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY'
AND TABLE_NAME LIKE 'Old_%''
完成后,我找不到如何解析它并在循环中执行它。
我的尝试是创建一个像这样的光标,但我不知道如何让它执行每一行:
DECLARE @AlterTables nvarchar(2000)
SET @AlterTables = 'DECLARE Dyn_cursor CURSOR
FOR SELECT ''ALTER TABLE '' + TABLE_SCHEMA + ''.['' + TABLE_NAME + ''] DROP CONSTRAINT ['' + CONSTRAINT_NAME + '']''
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE = ''FOREIGN KEY''
AND TABLE_NAME LIKE ''Old_%'''
Exec(@AlterTables)
Open Dyn_Cursor
FETCH NEXT FROM Dyn_Cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
END
Close Dyn_cursor
Deallocate Dyn_cursor
在此先感谢您的解决方案!
干杯
J.
【问题讨论】:
标签: sql-server dynamic cursor