Alterar tamanho campo de Primary Key ( composta )
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
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
Curtidas 0
Respostas
Fsflorencio
17/09/2004
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!
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!
GOSTEI 0
Martins
17/09/2004
fsflorencio
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[+]...
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[+]...
GOSTEI 0
Gandalf.nho
17/09/2004
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]
GOSTEI 0
Jose Oliveira
17/09/2004
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.
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.
GOSTEI 0
Afarias
17/09/2004
|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+
|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+
GOSTEI 0
Martins
17/09/2004
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.
GOSTEI 0