quarta-feira, 9 de janeiro de 2008

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

3 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