SQL Server: como adicionar a propriedade identity a uma coluna já existente

O SQL Server não oferece um meio de adicionar a propriedade identity a uma coluna já existente. Para resolver esse problema, é necessário recriar a tabela. A seguir mostro um exemplo de como realizar essa tarefa sem perder os dados já existentes.

Metadados da tabela:

create table cliente (
id integer not null,
nome varchar(100) not null,
endereco varchar(100),
constraint cliente_pk primary key (id)
)

1. Realize uma cópia da tabela:

select * into cliente_tmp from cliente

2. Apague a tabela:

drop table cliente

3. Recrie a tabela com a propriedade identity definida:

create table cliente (
id integer not null identity,
nome varchar(100) not null,
endereco varchar(100),
constraint cliente_pk primary key (id)
)

4. Copie de volta os dados da tabela:

set identity_insert cliente on

go

insert into cliente (id, nome, endereco)
select * from cliente_tmp


go

set identity_insert cliente off

go

5. Por fim, apague a cópia da tabela:

drop table cliente_tmp

Comentários

samir disse…
Mega util...

muito facil de aplicar

parabens...
Ray Silva disse…
E se a table tiver FK referenciada? Ai não dá dessa forma. :)
Anônimo disse…
Salvou meu emprego! haha

Postagens mais visitadas deste blog

DNS Gratuíto no Registro.br

Discador iBest para Linux no Kurumin 7

TIM: Recarga com Cartão de Crédito