Problemas com FKs..

Firebird

24/05/2005

Olá, tenho as seguintes tabelas:
CREATE TABLE CIDADE (
    IDCIDADE  INTEGER NOT NULL,
    UF        CHAR(2) NOT NULL,
    NOME      VARCHAR(80) NOT NULL,
    PX        INTEGER,
    PY        INTEGER,
    MAPA      VARCHAR(20)
);

ALTER TABLE CIDADE ADD CONSTRAINT PK_CIDADE PRIMARY KEY (IDCIDADE);


SET TERM ^ ;

/* Trigger: CIDADE_BI0 */
CREATE TRIGGER CIDADE_BI0 FOR CIDADE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
 new.idcidade = gen_id(gen_cidade, 1);
end
^
SET TERM ; ^




CREATE TABLE CLIENTE (
    IDCLIENTE          INTEGER NOT NULL,
    IDREPRESENTANTE    INTEGER,
    IDTIPOCLIENTE      INTEGER,
    NOME               VARCHAR(250),
    CONTATO            VARCHAR(100),
    ENDERECO           VARCHAR(250),
    COMPLEMENTO        VARCHAR(100),
    BAIRRO             VARCHAR(100),
    IDCIDADE           INTEGER,
    UF                 VARCHAR(2),
    CEP                VARCHAR(20),
    CPF                VARCHAR(14),
    RG                 VARCHAR(30),
    CNPJ               VARCHAR(24),
    INSCRICAOESTADUAL  VARCHAR(30),
    CIC                VARCHAR(40),
    INSCRICAOSUF       VARCHAR(30),
    TELEFONE1          VARCHAR(18),
    RAMALTEL1          VARCHAR(4),
    TELEFONE2          VARCHAR(18),
    RAMALTEL2          VARCHAR(4),
    TELEFONE3          VARCHAR(18),
    RAMALTEL3          VARCHAR(4),
    FAX                VARCHAR(18),
    CELULAR            VARCHAR(18),
    DATANASCIMENTO     DATE,
    DATACADASTRO       DATE,
    NOMEFANTASIA       VARCHAR(250),
    COLIGADO           VARCHAR(250),
    COBENDERECO        VARCHAR(250),
    COBCOMPLEMENTO     VARCHAR(100),
    COBBAIRRO          VARCHAR(100),
    COBCIDADE          INTEGER,
    COBUF              VARCHAR(2),
    COBCEP             VARCHAR(15),
    COBTELEFONE        VARCHAR(18),
    COBFAX             VARCHAR(20),
    COBCELULAR         VARCHAR(20),
    COBCONTATO         VARCHAR(150),
    COBOBS             BLOB SUB_TYPE 1 SEGMENT SIZE 250,
    COBENDERECOBANCO   VARCHAR(250),
    COBLOCALENTREGA    VARCHAR(250),
    EMPDATAFUNDACAO    DATE,
    EMPSTATUS          CHAR(1),
    EMPLIMITECREDITO   DECIMAL(15,2),
    EMPTIPOSERASA      CHAR(18),
    DTPRIMEIRACOMPRA   DATE,
    DTULTIMACOMPRA     DATE,
    VLRPRIMEIRACOMPRA  DECIMAL(15,2),
    VLRULTIMACOMPRA    DECIMAL(15,2),
    VLRACUMULADO       DECIMAL(15,2),
    HOMEPAGE           VARCHAR(250),
    EMAIL              VARCHAR(250),
    SOCIO1             VARCHAR(250),
    SOCIO1CPF          VARCHAR(15),
    SOCIO1CAPITAL      DECIMAL(15,2),
    SOCIO1DATANASC     DATE,
    SOCIO2             VARCHAR(250),
    SOCIO2CPF          VARCHAR(1),
    SOCIO2CAPITAL      DECIMAL(15,2),
    SOCIO2DATANASC     DATE,
    SOCIO3             VARCHAR(250),
    SOCIO3CPF          VARCHAR(15),
    SOCIO3CAPITAL      DECIMAL(15,2),
    SOCIO3DATANASC     DATE,
    SOCIO4             VARCHAR(250),
    SOCIO4CPF          VARCHAR(15),
    SOCIO4CAPITAL      DECIMAL(15,2),
    SOCIO4DATANASC     DATE,
    USERCADASTRO       VARCHAR(50),
    DATAATUALIZACAO    DATE,
    USERATUALIZACAO    DATE
);


ALTER TABLE CLIENTE ADD CONSTRAINT PK_CLIENTE PRIMARY KEY (IDCLIENTE);


ALTER TABLE CLIENTE ADD CONSTRAINT FK_CLIENTE_1 FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE) ON DELETE CASCADE;
ALTER TABLE CLIENTE ADD CONSTRAINT FK_CLIENTE_2 FOREIGN KEY (IDTIPOCLIENTE) REFERENCES TIPOCLIENTE (IDTIPOCLIENTE) ON DELETE CASCADE;
ALTER TABLE CLIENTE ADD CONSTRAINT FK_CLIENTE_3 FOREIGN KEY (IDCIDADE) REFERENCES CLIENTE (IDCLIENTE);


SET TERM ^ ;

/* Trigger: CLIENTE_BI0 */
CREATE TRIGGER CLIENTE_BI0 FOR CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  /* insiro o novo codigo */
  new.idcliente  = gen_id(gen_cliente, 1);
  new.datacadastro = current_date;
end
^

/* Trigger: CLIENTE_BU0 */
CREATE TRIGGER CLIENTE_BU0 FOR CLIENTE
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  new.dataatualizacao = current_date;
end
^

SET TERM ; ^



Pois bem, quando insiro um registro na tabela cliente, fala o seguinte erro:
[b:731f063268]
violation of FOREIGN KEY constraint ´´.
violation of FOREIGN KEY constraint ´FK_CLIENTE_3´ on table ´CLIENTE´.
[/b:731f063268]

porem, quando eu gravo o registro cliente, e depois vou la e insiro o idcidade nao da erro,

o que pode estar acontecendo?

Desde ja agradeco


[]s


Titanius

Titanius

Curtidas 0
POSTAR