Acrescentar campo na chave primaria
Tenho uma table em interbase, cuja chave primaria é o campo ´NOMEALUNO´. Preciso acrescentar também como chave primaria o campo ´CODALUNO´. A tabela já tem dados, e nao posso perde-los.
como fazer ?
obrigado
edeson
como fazer ?
obrigado
edeson
Edeson
Curtidas 0
Respostas
Afarias
20/11/2003
Edeson,
veja, o campo NOME não é uma boa escolha para chave primária -- pessoas diferentes podem ter o mesmo nome correto? -- no mais, é algo difícil de se manter controle.
vc tb não pode (na verdade não deve) ´adicionar´ um novo campo (codigo) na chave -- vai ficar sem sentido, além d que não é uma boa prática chaves compostas (é no mínimo mais difícil trabalhar com elas).
o que vc deve fazer ai é DROPAR sua chave primária e tornar CODIGO (e somente ele) sua nova chave -- não haverá problemas para fazer isso, mesmo já possuindo dados.
ALTER TABLE sua_tabela DROP CONSTRAINT nome_da_chave_primaria;
e depois::
ALTER TABLE sua_tabela ADD CONSTRAINT nome_chave_primaria
PRIMARY KEY (campo_codigo);
note apenas q, se houver qualquer chave estrangeira referenciando esta tabela, esta deverá ser ´dropada´ tb antes de prosseguir com a operação acima.
T+
veja, o campo NOME não é uma boa escolha para chave primária -- pessoas diferentes podem ter o mesmo nome correto? -- no mais, é algo difícil de se manter controle.
vc tb não pode (na verdade não deve) ´adicionar´ um novo campo (codigo) na chave -- vai ficar sem sentido, além d que não é uma boa prática chaves compostas (é no mínimo mais difícil trabalhar com elas).
o que vc deve fazer ai é DROPAR sua chave primária e tornar CODIGO (e somente ele) sua nova chave -- não haverá problemas para fazer isso, mesmo já possuindo dados.
ALTER TABLE sua_tabela DROP CONSTRAINT nome_da_chave_primaria;
e depois::
ALTER TABLE sua_tabela ADD CONSTRAINT nome_chave_primaria
PRIMARY KEY (campo_codigo);
note apenas q, se houver qualquer chave estrangeira referenciando esta tabela, esta deverá ser ´dropada´ tb antes de prosseguir com a operação acima.
T+
GOSTEI 0