#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
Для получения более подробной информации смотрите следующие ссылки:
Ответ №2:
В sybase ASE, если вы хотите удалить ограничение по умолчанию для таблицы, то
Найдите имя ограничения этого ограничения по умолчанию как
sp_helpconstraint имя_таблицы
теперь выполните этот запрос
изменить имя таблицы удалить ограничение constraintname