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

Откуда: Bratsk
Сообщений: 62
Как добавить к колонке DEFAULT (n), не изменяя значения записей? Аналогично к другой колонке добавить IDENTITY(n,m). Через SQL-скрипт.
Дайте плс пример через Alter Table. Вот так не хочет.

alter TABLE [dbo].[SServicesList]
    alter column [Id] int IDENTITY(1,1)
28 июл 04, 04:42    [840596]     Ответить | Цитировать Сообщить модератору
 Re: Помогите изменить параметры колонки не теряя данных  [new]
sti
Member

Откуда:
Сообщений: 769
добавляешь новый столбец с Identity, копируешь в него данные из старого, потом удаляешь старый.
28 июл 04, 04:59    [840598]     Ответить | Цитировать Сообщить модератору
 Re: Помогите изменить параметры колонки не теряя данных  [new]
unsigned
Member

Откуда:
Сообщений: 1
create defaul zero_const as 0
sp_bindefault 'zero_const', 'object_name'
28 июл 04, 06:00    [840608]     Ответить | Цитировать Сообщить модератору
 Re: Помогите изменить параметры колонки не теряя данных  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Самое надежное, ИМХО, подсмотреть как такое делает ЕМ, а потом внести соответствующие изменения в полученный скрипт и применить это к своей табличке.
28 июл 04, 06:31    [840622]     Ответить | Цитировать Сообщить модератору
 Re: Помогите изменить параметры колонки не теряя данных  [new]
Vladimir O
Member

Откуда: Bratsk
Сообщений: 62
автор
добавляешь новый столбец с Identity, копируешь в него данные из старого, потом удаляешь старый.


Вот что получилось:

alter TABLE [dbo].[Deceaseds]
    add IsOpened2 TINYINT DEFAULT (0) NOT NULL
go
insert into Deceaseds (IsOpened2)
    select IsOpened from Deceaseds
go
alter TABLE [dbo].[Deceaseds]
    drop column IsOpened
go
EXEC sp_rename 'Deceaseds.IsOpened2', 'IsOpened', 'COLUMN'
go

Все команды работают за исключением INSERT:
Cannot insert the value NULL into column 'IsOpened', table 'medGB3old.dbo.Deceaseds'; column does not allow nulls. INSERT fails.
The statement has been terminated.


Почему?


автор
Самое надежное, ИМХО, подсмотреть как такое делает ЕМ, а потом внести соответствующие изменения в полученный скрипт и применить это к своей табличке.

Какой ЕМ? Где смотреть?
28 июл 04, 07:41    [840658]     Ответить | Цитировать Сообщить модератору
 Re: Помогите изменить параметры колонки не теряя данных  [new]
sti
Member

Откуда:
Сообщений: 769
UPDATE Deceaseds SET IsOpened2 = IsOpened

EM - Enterprise Manager
28 июл 04, 07:55    [840677]     Ответить | Цитировать Сообщить модератору
 Re: Помогите изменить параметры колонки не теряя данных  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Vladimir O

Все команды работают за исключением INSERT:
Cannot insert the value NULL into column 'IsOpened', table 'medGB3old.dbo.Deceaseds'; column does not allow nulls. INSERT fails.
The statement has been terminated.


Почему?

А напиши так
alter TABLE [dbo].[Deceaseds]
    add IsOpened2 TINYINT DEFAULT (0) WITH VALUES NOT NULL
go
28 июл 04, 08:04    [840692]     Ответить | Цитировать Сообщить модератору
 Re: Помогите изменить параметры колонки не теряя данных  [new]
Vladimir O
Member

Откуда: Bratsk
Сообщений: 62
Работает на ура.
UPDATE Deceaseds SET IsOpened2 = IsOpened

...with values... не помогло
28 июл 04, 09:16    [840805]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить