Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не работает UPDATE после alter table - почему?  [new]
Blackmore
Member

Откуда:
Сообщений: 532
SQL Express 2017

    alter table [dbo].T1
    add InterID bigint null

    update [dbo].T1 set InterID=2


В результате получаю:

автор
Msg 207, Level 16, State 1, Line 25
Invalid column name 'InterID'.


Таблица существаует, я - SA на сервере. Что ему не нравится?
17 дек 19, 15:38    [22042258]     Ответить | Цитировать Сообщить модератору
 Re: Не работает UPDATE после alter table - почему?  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
alter table [dbo].T1
    add InterID bigint null
go
    update [dbo].T1 set InterID=2
17 дек 19, 15:41    [22042263]     Ответить | Цитировать Сообщить модератору
 Re: Не работает UPDATE после alter table - почему?  [new]
Blackmore
Member

Откуда:
Сообщений: 532
Ок, вот как сейчас делаю:

if not exists (select 1 from information_schema.columns where table_name = 'T1' and column_name = 'InterID')
begin
    alter table [dbo].T1
    add InterID bigint null

GO
    update [dbo].T1 set InterID=2

    alter table dbo.T1
    alter column InterID bigint not  null
end


В ответ:

Msg 102, Level 15, State 1, Line 21
Incorrect syntax near 'null'.
Msg 102, Level 15, State 1, Line 29
Incorrect syntax near 'end'.



Что на этот раз поменять?
17 дек 19, 16:17    [22042299]     Ответить | Цитировать Сообщить модератору
 Re: Не работает UPDATE после alter table - почему?  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1527
Blackmore
Ок, вот как сейчас делаю:

if not exists (select 1 from information_schema.columns where table_name = 'T1' and column_name = 'InterID')
begin
    alter table [dbo].T1
    add InterID bigint null

GO
    update [dbo].T1 set InterID=2

    alter table dbo.T1
    alter column InterID bigint not  null
end


В ответ:

Msg 102, Level 15, State 1, Line 21
Incorrect syntax near 'null'.
Msg 102, Level 15, State 1, Line 29
Incorrect syntax near 'end'.



Что на этот раз поменять?
Логику. И научится отличать команды языка от средств инструмента для написания текста на этом языке.
17 дек 19, 16:24    [22042309]     Ответить | Цитировать Сообщить модератору
 Re: Не работает UPDATE после alter table - почему?  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
Blackmore,

инструкция go - это разделитель пакетов для ssms. не может блок begin..end начинаться в одном пакете и заканчиваться в другом
пишите два if или в динамике делайте или ещё как-то
17 дек 19, 16:25    [22042311]     Ответить | Цитировать Сообщить модератору
 Re: Не работает UPDATE после alter table - почему?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Blackmore,


ALTER TABLE #t ADD InterID bigint not  NULL CONSTRAINT DF_InterD DEFAULT 2;
ALTER TABLE #t DROP CONSTRAINT DF_Interd
17 дек 19, 16:26    [22042313]     Ответить | Цитировать Сообщить модератору
 Re: Не работает UPDATE после alter table - почему?  [new]
Blackmore
Member

Откуда:
Сообщений: 532
Shakill,

Знал про это, но думал что может что есть красивое, без EXEC()
17 дек 19, 18:55    [22042487]     Ответить | Цитировать Сообщить модератору
 Re: Не работает UPDATE после alter table - почему?  [new]
Blackmore
Member

Откуда:
Сообщений: 532
Minamoto,

Да, пожалуй это лучшее, что можно сделать без EXEC(). Спасибо!
17 дек 19, 18:56    [22042488]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить