Я запускаю следующий код sql в sybase
Declare @cp int
select @cp = count(*) from syscolumns where id = object_id('activ') and name = 'pending'
if (@cp = 0 )
begin
execute("
ALTER TABLE activ ADD pending char(1) DEFAULT 'Y'
")
print 'pending added '
end
Когда я запускаю первый раз, я получаю «предупреждение: схема для таблицы activ изменилась. Отбросьте и заново создайте каждый триггер в этой таблице, который использует предложение if update»
При последующих запусках я больше не получаю это предупреждение. Есть ли способ избежать появления этого предупреждения в первый раз?
Я просмотрел несколько полезных ссылок. 1Информация о самой ошибке. Я до сих пор не знаю, как удалить эту ошибку / предупреждение.
@markp это ASE. При последующих запусках он не входит в условие if, потому что изменение было выполнено в первый раз. Если я отброшу столбец и снова запущу его, я снова получу такое же предупреждение.
Итак, вы говорите, что сценарий ведет себя так, как ожидалось ... когда столбец не существует, вызывается execute(...)
и генерируется предупреждающее сообщение ... когда столбец уже существует, вызывается execute(...)
нет, поэтому предупреждающее сообщение не создается ; Я не знаю, как отключить предупреждающее сообщение; Можете ли вы (или ваш родительский скрипт) просто проигнорировать сообщение?
какой продукт Sybase (ASE? SQLAnywhere? IQ? Advantage?)? что вы имеете в виду под «последующими прогонами» ... при последующих прогонах существовала ли колонка и, следовательно,
execute(...)
не сработал? ... вы уронили колонку между прогонами, чтобыexecute(...)
срабатывал каждый раз?