Sybase - ограничения по умолчанию - PullRequest
0 голосов
/ 25 мая 2011

Мне нужно удалить все ограничения уровня столбца по умолчанию для таблицы в 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 голосов
/ 14 сентября 2017

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

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

sp_helpconstraint TableName

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

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

0 голосов
/ 26 мая 2011

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

sp_helpconstraint $tableName

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

alter table table_name 
 drop constraint constraint_name

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

sp_helpconstraint

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

...