Subject How insert in two tables with FK, on the same transaction ?
Author Gerson Machado
so... i have this two tables created.

Table 1

CREATE TABLE TB_PEDIDO (
ID INTEGER NOT NULL,
ID_EMPRESA CODIGO_OBRIGATORIO,
DATA_HORA DATA_HORA,
SITUACAO LITERAL001,
ID_ENDERECO_FATURA CODIGO_OBRIGATORIO,
ID_ENDERECO_PAP CODIGO_NAO_OBRIGATORIO,
ID_ENDERECO_CD CODIGO_NAO_OBRIGATORIO,
ID_ENDERECO_COBRANCA CODIGO_NAO_OBRIGATORIO);

ALTER TABLE TB_PEDIDO ADD PRIMARY KEY (ID);

Table 2

CREATE TABLE TB_PEDIDO_ITENS (
ID INTEGER NOT NULL,
ID_PEDIDO INTEGER,
ID_PRODUTO INTEGER,
QTDE NUMERIC(18, 3));

ALTER TABLE TB_PEDIDO_ITENS ADD PRIMARY KEY (ID);
ALTER TABLE TB_PEDIDO_ITENS ADD CONSTRAINT FK_TB_PEDIDO_ITENS FOREIGN KEY (ID_PEDIDO) REFERENCES TB_PEDIDO(ID) ON DELETE CASCADE ON UPDATE CASCADE;

And this Stored Procedure...

INSERT INTO TB_PEDIDO (ID_EMPRESA,
DATA_HORA,
SITUACAO,
ID_ENDERECO_FATURA,
ID_ENDERECO_PAP,
ID_ENDERECO_CD,
ID_ENDERECO_COBRANCA)
VALUES
(:VA_ID_EMPRESA,
:VI_DATA_ABRE,
'A',
0,
0,
0,
0);
VA_ID_PEDIDO = GEN_ID(TB_PEDIDO_ID_GEN1, 0);

after this INSERT the error occurs....

INSERT INTO TB_PEDIDO_ITENS (ID_PEDIDO,
ID_PRODUTO,
QTDE)
VALUES
(:VA_ID_PEDIDO,
:VI_ID_PRODUTO,
:VI_QTDE);

The ERROR:
Violation of FOREIGN KEY constraint "FK_TB_PEDIDO_ITENS" on table "TB_PEDIDO_ITENS". Foreign key reference target does not exist.

Of course this error is correct, my record on the table1 was'n INSERTED yeat, but that I need to do to INSERT in table2, if table1 and table2 are on the same transation ?

Tks for help

Gerson



__________________________________________________
Fale com seus amigos de graça com o novo Yahoo! Messenger
http://br.messenger.yahoo.com/

[Non-text portions of this message have been removed]