Fórum Problemas com Chave estrangeira #39242
07/10/2003
0
CREATE TABLE ´CONDICOESPGTO´
(
´NOME´VARCHAR(25) CHARACTER SET WIN1252 NOT NULL COLLATE PXW_INTL850,
CONSTRAINT ´PK_CONDICOESPGTO´ PRIMARY KEY (´NOME´)
);
CREATE TABLE ´TABELAS´
(
´NOME´VARCHAR(25) CHARACTER SET WIN1252 NOT NULL COLLATE PXW_INTL850,
´COMISSAO´NUMERIC(7, 3),
´AD´NUMERIC(7, 3),
´CONDICAOPGTO´VARCHAR(25) CHARACTER SET WIN1252,
CONSTRAINT ´PK_TABELAS´ PRIMARY KEY (´NOME´)
);
ALTER TABLE ´TABELAS´ ADD CONSTRAINT ´FK_CONDICOESPGTO´ FOREIGN KEY (´CONDICAOPGTO´) REFERENCES CONDICOESPGTO (´NOME´) ON UPDATE CASCADE ON DELETE NO ACTION;
[b:1ec6b31dd1]Porem não consigo inserir dados na tabela ´TABELAS´, ocorre erro de violação de foreign key.
Se alguem puder ajudar agradeco.[/b:1ec6b31dd1]
Paganato
Curtir tópico
+ 0Posts
08/10/2003
Afarias
e o valor q vc quer colocar em ´TABELAS´.´CONDICAOPGTO´ existe em ´CONDICAOPGTO´.´NOME´ ??
T+
Gostei + 0
08/10/2003
Paganato
Esta tudo correto, ou pelo menos eu acho que esta. Na estrutura que passei existe algum erro ou inconcistencia?
Gostei + 0
08/10/2003
Afarias
T+
Gostei + 0
13/10/2003
Paganato
Na tabela ´CONDICOESPGTO´ o campo Nome continha um COLLATE e na tabela ´TABELAS´, a chave estrangeira que é o campo Condicaopgto no continha o COLLATE. Eu coloquei o COLLATE para os dois campos e deu tudo certo.
Muito grato pela ajuda, porém estou com outro problema. Quando tento excluir um registro de CondicoesPgto que tenha um relacionamento com Tabelas, tenho a seguinte exceção
´Violation of FOREIGN KEY constraint ´FK_CONDICOESPGTO´ on table ´TABELAS´.
Lembrando a estrutura da tabela ´TABELAS´.
- ALTER TABLE ´TABELAS´ ADD CONSTRAINT ´FK_CONDICOESPGTO´ FOREIGN KEY (´CONDICAOPGTO´) REFERENCES CONDICOESPGTO (´NOME´) ON UPDATE CASCADE [B]ON DELETE NO ACTION[\B].
Gostei + 0
13/10/2003
Afarias
como vc definiu:: ON DELETE NO ACTION -- está de acordo com a manutenção da integridade do banco de dados. o IB não vai permitir q vc exclua um registro de ´tipo de pgto´ enquanto está sendo usado por outra tabela relacionada.
vc pode também definir a ação ´on delete´ como::
CASCADE
SET NULL
SET DEFAULT
depende das suas ´regras de negócio´
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)