我需要在Sybase中删除表中的所有默认列级约束。
我不知道该怎么做,我试图用以下方法禁用约束:
ALTER TABLE Employee NOCHECK CONSTRAINT ALL
以上不起作用,给出如下错误:
Error (156) Incorrect syntax near the keyword 'CONSTRAINT'
另外,我尝试了一些自定义存储过程,使用sys表但不符合Sybase语法,它适用于SQL服务器,如下所示:
declare @sql varchar(1024)
declare curs cursor for
select 'ALTER TABLE '+tab.name+' DROP CONSTRAINT '+cons.name
from sysobjects cons,sysobjects tab
where cons.type in ('D')
and cons.parent_object_id=tab.object_id and tab.type='U'
order by cons.type
open curs
fetch next from curs into @sql
while (@@fetch_status = 0)
begin
exec(@sql)
fetch next from curs into @sql
end
close curs
deallocate curs
有人可以解决这个谜语吗。
答案 0 :(得分:0)
我自己并不熟悉SQL,但是只能用SQL来解决这个问题吗?您还可以编写一个脚本,在运行时获取模式,并计算出给定表上所有约束的名称。例如,
sp_helpconstraint $tableName
在此之后,您可以使用以下命令:
alter table table_name
drop constraint constraint_name
有关详细信息,请参阅以下参考资料:
答案 1 :(得分:-1)
在sybase ASE中,如果要删除表上的默认约束,则
将该默认约束的约束名称查找为
sp_helpconstraint TableName
现在执行此查询
alter table TableName drop constraint constraintname