GARANTIR DESCONTO

Fórum Alterar tamanho campo de Primary Key ( composta ) #46783

17/09/2004

0

Ola pessoal,

Como faço para alterar o tamanho do campo EMPRESA, de 4 para 6,
via SQL, sem perder os dados já existentes, sendo:


EMPRESA - VARCHAR(4) NOT NULL ( primary key)
REGIAO - VARCHAR(10) NOT NULL ( primary key)
GERENTE VARCHAR(40)
TELEFONE VARCHAR(14)
CIDADE VARCHAR(30)

Desde já agradeço,
Geraldo


Jose Oliveira

Jose Oliveira

Responder

Posts

17/09/2004

Fsflorencio

Vc deve antes dropar a constraint que define a chave primária, senão vc não consegue alterar o tipo do campo.

Além da constraint este campo não pode ter nenhuma dependência como stored procedures, triggers ou views. Caso tenha, vc deve dropar e depois criar novamente estas dependências.

alterando o tipo de campo por SQL não há perda de nenhuma informação.

Se vc tentar alterar para um tamanho menor isto não é possível, sendo necessária a criação de um campo novo do tipo correto transferindo para sí os registros do campo a ser alterado e depois renomeando este campo depois de dropar o campo velho.

blz!


Responder

Gostei + 0

17/09/2004

Martins

fsflorencio
Vc deve antes dropar a constraint que define a chave primária, senão vc não consegue alterar o tipo do campo. Além da constraint este campo não pode ter nenhuma dependência como stored procedures, triggers ou views. Caso tenha, vc deve dropar e depois criar novamente estas dependências. alterando o tipo de campo por SQL não há perda de nenhuma informação. Se vc tentar alterar para um tamanho menor isto não é possível, sendo necessária a criação de um campo novo do tipo correto transferindo para sí os registros do campo a ser alterado e depois renomeando este campo depois de dropar o campo velho.

Só aproveitando o q o colega falou, seria interessante vc fazer um estudo sobre o uso de dominios, se bem q ainda assim vc teria q dorpar as dependências e indices, mas não perderia seus dados.

PS: Seria interessante vc utilizar o IB-Expert, acho q fica mais fácil do q o IBConsole.

T[+]...


Responder

Gostei + 0

17/09/2004

Gandalf.nho

Outra possibilidade, se for muito complicado dropar constraints, procedures, triggers e outros, é criar uma cópia em branco da base já com as modificações necessárias no script e depois copiar os dados da base velha pra nova através de um programa como o IBDataPump [url]http://www.clevercomponents.com [/url]


Responder

Gostei + 0

17/09/2004

Jose Oliveira

A tabela não possui <Referential Constraints>, possuindo apenas
primary Key.

Desta forma não tem como dropar a constraint que define a chave primária.

Qual a solução nesse caso.

Obrigado, Geraldo.


Responder

Gostei + 0

17/09/2004

Afarias

|A tabela não possui , possuindo apenas
|primary Key.


sequência::

alter table nome_da_tabela drop constraint nome_da_primary_key;

alter table nome_da_tabela alter empresa type varchar(6);

alter table nome_da_tabela add constraint nome_da_nova_primary_key
primary key (empresa, regiao);



T+


Responder

Gostei + 0

17/09/2004

Martins

alter table nome_da_tabela drop constraint nome_da_primary_key; alter table nome_da_tabela alter empresa type varchar(6); alter table nome_da_tabela add constraint nome_da_nova_primary_key primary key (empresa, regiao);


Show de bola... uma questão de analise lógica da situação, ainda bem q podemos contar com companheiros dedicados a ajudar o próximo.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar