如何删除属于SQL 2005中特定表的所有默认约束条件?如何删除表中的所有默认约束约束条件
回答
一个解决方案from a search:(编辑为默认约束)
SET NOCOUNT ON
DECLARE @constraintname SYSNAME, @objectid int,
@sqlcmd VARCHAR(1024)
DECLARE CONSTRAINTSCURSOR CURSOR FOR
SELECT NAME, object_id
FROM SYS.OBJECTS
WHERE TYPE = 'D' AND @objectid = OBJECT_ID('Mytable')
OPEN CONSTRAINTSCURSOR
FETCH NEXT FROM CONSTRAINTSCURSOR
INTO @constraintname, @objectid
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT @sqlcmd = 'ALTER TABLE ' + OBJECT_NAME(@objectid) + ' DROP CONSTRAINT ' + @constraintname
EXEC(@sqlcmd)
FETCH NEXT FROM CONSTRAINTSCURSOR
INTO @constraintname, @objectid
END
CLOSE CONSTRAINTSCURSOR
DEALLOCATE CONSTRAINTSCURSOR
将OBJECT_NAME更改为PARENT_OBJECT_NAME效果不错。 – 2009-04-22 08:24:30
好的查询。我会尽量纠正。游标的声明应该是:SELECT NAME,parent_object_id FROM SYS.OBJECTS WHERE TYPE ='D'AND parent_object_id = OBJECT_ID('Mytable') – 2013-04-10 08:50:28
只是你为什么要这么做?删除约束是一个非常激烈的行为,并影响所有用户,而不仅仅是您的过程。也许你的问题可以通过其他方式解决。如果你不是系统的dba,你应该认真考虑你是否应该这样做。 (当然在大多数系统中,dba不会允许任何其他人执行此类操作)。
我知道这是旧的,但我在Google上搜索时发现它。 对我来说,2008年的SQL(不知道2005年),而不是诉诸光标有效的解决方案是如下:
declare @sql nvarchar(max)
set @sql = ''
select @sql = @sql + 'alter table YourTable drop constraint ' + name + ';'
from sys.default_constraints
where parent_object_id = object_id('YourTable')
AND type = 'D'
exec sp_executesql @sql
- 1. Sybase - 默认约束条件
- 2. 如何删除Db2中列的默认约束条件
- 3. 删除子类属性中的所有验证约束条件
- 4. Symfony如何从默认验证组中删除约束
- 5. 问题的“默认”约束
- 6. 删除约束iOS
- 7. 从不同表中删除具有约束条件的多列
- 8. 如何删除空白活动的默认约束布局?
- 9. 如何列出MS Access中所有表的约束条件?
- 10. 如何删除约束refernase两个表
- 11. 如何删除表和约束条件(如果存在)?
- 12. 如何正确重命名所有未命名的默认约束条件
- 13. 为所有表中的所有列添加约束条件
- 14. 如何删除postgres中的约束?
- 15. scipy.optimize.leastsq有约束约束
- 16. SQLServer2000约束条件
- 17. 当没有约束时,sql无法删除约束
- 18. mysql的删除约束
- 19. 删除约束在SQLAlchemy的
- 20. 删除MySQL表中的唯一约束条件
- 21. MySQL中默认约束的SQL语法
- 22. 创建表时声明默认约束条件
- 23. 在iOS7上的UICollectionViewCell子类中未约束的约束条件
- 24. “SQLSTATE [23000]:完整性约束违规”与有效约束条件
- 25. Oracle_CX ALTER TABLE删除约束
- 26. SimpleMembership无法删除约束
- 27. 是否访问SQL允许删除默认的约束?
- 28. 具有默认约束的列和具有默认约束的列之间有什么区别?
- 29. Postgres中的表宽约束条件
- 30. 删除复制表的外键约束
我已经删除了我的答案,因为我不是100%肯定,我无法测试。 – Peter 2009-04-20 07:52:01
你自己的解决方案似乎没问题,不是吗? – Peter 2009-04-20 07:53:47