GARANTIR DESCONTO

Fórum Problemas com Chave estrangeira #39242

07/10/2003

0

[b:1ec6b31dd1]Tenho a seguinte estrutura:[/b:1ec6b31dd1]

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

Paganato

Responder

Posts

08/10/2003

Afarias

?

e o valor q vc quer colocar em ´TABELAS´.´CONDICAOPGTO´ existe em ´CONDICAOPGTO´.´NOME´ ??


T+


Responder

Gostei + 0

08/10/2003

Paganato

O ´CONDICOESPGTO´.´NOME´ existe.
Esta tudo correto, ou pelo menos eu acho que esta. Na estrutura que passei existe algum erro ou inconcistencia?


Responder

Gostei + 0

08/10/2003

Afarias

estava me referindo aos valores inseridos na tabela!! -- se o valor q vc está tentando colocar em ´TABELAS´.´CONDICAOPGTO´ existe cadastrado na tabela ´CONDICAOPGTO´ ...


T+


Responder

Gostei + 0

13/10/2003

Paganato

Amigo afarias, consegui resolver o problema com a chave estrangeira:
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].


Responder

Gostei + 0

13/10/2003

Afarias

isso é normal.

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+


Responder

Gostei + 0

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

Aceitar