Sybase - 默认约束

时间:2011-05-25 05:52:07

标签: sybase

我需要在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

有人可以解决这个谜语吗。

2 个答案:

答案 0 :(得分:0)

我自己并不熟悉SQL,但是只能用SQL来解决这个问题吗?您还可以编写一个脚本,在运行时获取模式,并计算出给定表上所有约束的名称。例如,

sp_helpconstraint $tableName

在此之后,您可以使用以下命令:

alter table table_name 
 drop constraint constraint_name

有关详细信息,请参阅以下参考资料:

sp_helpconstraint

Dropping columns or column constraints

答案 1 :(得分:-1)

在sybase ASE中,如果要删除表上的默认约束,则

将该默认约束的约束名称查找为

sp_helpconstraint TableName

现在执行此查询

alter table TableName drop constraint constraintname