Alterar campo para not null

Firebird

03/05/2005

Olá Pessoal,

Estou precisando alterar um campo para not null, e colocá-lo como chave primária numa tabela já instalada no cliente. Como Faço?


Ediane

Ediane

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

03/05/2005

Colega,

Vc precisará de uma coluna auxiliar para armazenar os valores atuais, dropar e recriar a coluna original como not null e criar a contraint de chave primária.

Algo como :
alter table TABELA add COLUNA_TMP integer;
update TABELA set COLUNA_TMP = COLUNA_ORIGINAL;
/****/
alter table TABELA drop COLUNA_ORIGINAL;
alter table TABELA add COLUNA_NOVA integer not null;
alter table TABELA add constraint PK_TABELA primary key (COLUNA_NOVA);
/****/
update TABELA set COLUNA_NOVA = COLUNA_TMP;
alter table TABELA drop COLUNA_TMP;


Não se esqueça de fazer um backup antes, caso ocorra algum erro na execução do script e ele não seja completado.

Espero ter ajudado.

T+


GOSTEI 0
Gandalf.nho

Gandalf.nho

03/05/2005

Algumas ferramentas como o IBExpert permitem isso (provavelmente alterando diretamente as tabelas de sistema)


GOSTEI 0
Ediane

Ediane

03/05/2005

Obrigada pelas dicas colegas!


GOSTEI 0
POSTAR