Subject | How insert in two tables with FK, on the same transaction ? |
---|---|
Author | Gerson Machado |
Post date | 2007-01-30T12:03:01Z |
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]
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]