Fórum inserir em RDB$INDEX_SEGMENTS e RDB$INDICES #44334
17/05/2004
0
Estou com um problema:
Criei a tabela e esqueci de criar a primary key dela.
Usando o alter table eu não consigo criar, ele dá um erro.
Observando as tabelas de sistema RDB$INDEX_SEGMENTS e RDB$INDICES, criei (´ na unha ´), a primary key.
Pergunta:
Gostaria de saber se o que fiz foi correto.
Ou se corro o risco de ´zuar´ o sistema.
Uso Delphi 6 e Interbase 6.0
Obrigada
Karen
Karencamila
Curtir tópico
+ 0Posts
17/05/2004
Afarias
É possível q vc resolva o problema assim (sem causar danos) -- mas, não tentaria isso nunca em um banco em produção -- as consequências podem ser imprevisíveis se vc já não tem experiência com esta ação.
Melhor saria postar aqui qual o erro q estava recebendo e ver se resolve para criar a chave com comandos DDL.
T+
Gostei + 0
18/05/2004
Karencamila
[b:9e137ddde4]- Primeiramente tento criar um campo ( que será a primary key ) na tabela tentado criar como primary key:[/b:9e137ddde4]
alter table tab_contratos
add contador integer not null primary key;
[b:9e137ddde4]E o erro é: [/b:9e137ddde4]
´Attempt to store duplicate value (visible to active transactions) in unique index ´RDB$PRIMARY72´
null segment of UNIQUE KEY
Statement: alter table tab_contratos
add contador integer not null primary key´
[b:9e137ddde4]Sendo que a cada vez que tento executar o código, esse codigo: ´RDB$PRIMARY72´ cresce , exemplo:[/b:9e137ddde4]
[b:9e137ddde4]>>Se eu tentar novamente executar o codigo, o erro será:[/b:9e137ddde4]
Attempt to store duplicate value (visible to active transactions) in unique index ´RDB$PRIMARY73´
null segment of UNIQUE KEY
Statement: alter table tab_contratos
add contador integer not null primary key.
[b:9e137ddde4]Então faço diferente, crio o campo:[/b:9e137ddde4]
alter table tab_contratos
add contador integer not null ;
[b:9e137ddde4]E depois tento atribuir a ele primary key:[/b:9e137ddde4]
alter table tab_contratos add constraint PK_CONTADOR primary key(contador);
[b:9e137ddde4]E ele dá o seguinte erro:[/b:9e137ddde4]
Attempt to store duplicate value (visible to active transactions) in unique index ´RDB$PRIMARY76´
null segment of UNIQUE KEY
Statement: alter table tab_contratos add constraint PK_CONTADOR primary key(contador)
[b:9e137ddde4]O que posso estar fazendo errado??
Ou será que o interbase 6.0 não aceita esse tipo de atribuição??[/b:9e137ddde4]
[b:9e137ddde4]
Obrigada desde já
Karen[/b:9e137ddde4]
Gostei + 0
18/05/2004
Afarias
** admitindo q não exista já uma chave primária na tabela em questão, se existir, esta deve ser antes dropada **
1- crie o campo que será chave primária::
alter table tab_contratos add contador integer not null;
2- se a tabela já possui registros, preencha este novo campo com valores únicos!!! (muito importate!)::
update tab_contratos set contador = gen_id(algum_generator, 1);
commit;
3- adicione então a chave primária na tabela::
alter table tab_contratos add constraint pk_tab_contratos
primary key (contador);
T+
Gostei + 0
18/05/2004
Karencamila
DEU CERTO!!!
:D :D :D :D :D :D
Nossa!!! Valew....
MUUUITO OBRIGADA!!!!
Karen
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)