Sybase — Ограничения по умолчанию

#sybase

#sybase

Вопрос:

Мне нужно удалить все ограничения на уровне столбцов по умолчанию для таблицы в Sybase.

Я понятия не имею, как это сделать, я пытался отключить ограничения следующим образом, как показано ниже:

 ALTER TABLE Employee NOCHECK CONSTRAINT ALL
  

Вышеуказанное даже не работает, выдает ошибку, как показано ниже:

 Error (156) Incorrect syntax near the keyword 'CONSTRAINT'
  

Кроме того, я пробовал использовать некоторые пользовательские хранимые процедуры с таблицами sys, но это не соответствует синтаксису Sybase, оно работает на SQL server, как показано ниже:

 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
  

Может кто-нибудь, пожалуйста, решить эту загадку..

Ответ №1:

Я сам не очень хорошо знаком с SQL, но обязательно ли решать это только с помощью SQL? Вы также можете написать скрипт, который извлекает схему во время выполнения и вычисляет имена всех ограничений в данной таблице. Пример,

 sp_helpconstraint $tableName
  

После этого вы можете использовать следующую команду:

 alter table table_name 
 drop constraint constraint_name
  

Для получения более подробной информации смотрите следующие ссылки:

sp_helpconstraint

Удаление столбцов или ограничений столбца.

Ответ №2:

В sybase ASE, если вы хотите удалить ограничение по умолчанию для таблицы, то

Найдите имя ограничения этого ограничения по умолчанию как

sp_helpconstraint имя_таблицы

теперь выполните этот запрос

изменить имя таблицы удалить ограничение constraintname