Я пытался гуглить, но не нашел пути
У меня есть скрипт t-sql, который добавляет новый столбец в таблицу, затем заполняет эти столбцы значениями, зависящими от некоторых других столбцов в той же таблице, и, наконец, удаляет некоторые столбцы. Это все отлично работает.
Проблема возникает, когда я хочу снова запустить скрипт. У меня есть предложение if, которое проверяет, существуют ли отсутствующие столбцы, но SSMS по-прежнему жалуется и отображает сообщения об ошибках, даже если код внутри предложения if не запускается. Сценарий должен запускаться более одного раза, и я не хочу, чтобы отображались сообщения об ошибках!
В коде (очевидно, тестовый код, здесь не нужно выводить производственный код ...):
create table test (
Name text,
Switch int,
ValueA int,
ValueB int)
go
insert into test values ('Name', 0, 5, 10)
if not exists (select 1 from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME = 'ValueC' and TABLE_NAME = 'test')
begin
alter table test
add ValueC int
end
go
-- This batch rasies error when run more then once!
if exists (select 1 from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME = 'ValueA' and TABLE_NAME = 'test')
begin
update test
set ValueC = (select case Switch
when 0 then (select (ValueA - ValueB))
when 1 then (select (ValueB - ValueA))
end)
end
go
if exists (select 1 from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME = 'ValueA' and TABLE_NAME = 'test')
begin
alter table test drop column ValueA
end
go
select * from test
--Name 0 10 -5
Вот сообщение об ошибке:
Msg 207, Level 16, State 1, Line 6
Invalid column name 'ValueA'.
Msg 207, Level 16, State 1, Line 7
Invalid column name 'ValueA'.
Приветствие
--Jocke