Hi friends, I was searching in all forum but I can't find the answer to my question.This is the simplest solution I can think of:
I haveI know that I have to use "SQLQuery1.Open" if I want to get the returning ID but I can't use a transaction SQL with Open.
SQLQuery1.SQL.Text := ' BEGIN; ' +' INSERT INTO MASTERDATA (THINGS) VALUES (THINGS) RETURNING ID; ' +' INSERT INTO DETAILDATA (IDMASTER,THINGS) VALUES (currval(''MASTERDATA _ID_seq''::regclass),THINGS); ' +' COMMIT; ';
My question is. How can I return values from transaction SQL using Open (or something like that)?.
Thanks.
Hi friends, I was searching in all forum but I can't find the answer to my question.This is the simplest solution I can think of:
I haveI know that I have to use "SQLQuery1.Open" if I want to get the returning ID but I can't use a transaction SQL with Open.
SQLQuery1.SQL.Text := ' BEGIN; ' +' INSERT INTO MASTERDATA (THINGS) VALUES (THINGS) RETURNING ID; ' +' INSERT INTO DETAILDATA (IDMASTER,THINGS) VALUES (currval(''MASTERDATA _ID_seq''::regclass),THINGS); ' +' COMMIT; ';
My question is. How can I return values from transaction SQL using Open (or something like that)?.
Thanks.
SQLQuery1.Close; SQLQuery1.SQL.Text := 'INSERT INTO MASTERDATA (THINGS) VALUES (THINGS) RETURNING ID;'; SQLQuery1.Open; SQLQuery2.Close; SQLQuery2.SQL.Text := 'INSERT INTO DETAILDATA (IDMASTER, THINGS) VALUES (' + SQLQuery1.FieldByName('ID').AsString + ', THINGS);'; SQLQuery2.ExecSQL; SQLQuery2.SQL.Text := 'INSERT INTO DETAILDATA (IDMASTER, THINGS) VALUES (' + SQLQuery1.FieldByName('ID').AsString + ', THINGS);'; SQLQuery2.ExecSQL; SQLQuery2.SQL.Text := 'INSERT INTO DETAILDATA (IDMASTER, THINGS) VALUES (' + SQLQuery1.FieldByName('ID').AsString + ', THINGS);'; SQLQuery2.ExecSQL; SQLQuery2.SQL.Text := 'INSERT INTO DETAILDATA (IDMASTER, THINGS) VALUES (' + SQLQuery1.FieldByName('ID').AsString + ', THINGS);'; SQLQuery2.ExecSQL; SQLQuery2.SQL.Text := 'INSERT INTO DETAILDATA (IDMASTER, THINGS) VALUES (' + SQLQuery1.FieldByName('ID').AsString + ', THINGS);'; SQLQuery2.ExecSQL; SQLQuery1.ApplyUpdates(); TSQLTransaction(SQLQuery1.Transaction).Commit(); SQLQuery2.ApplyUpdates(); TSQLTransaction(SQLQuery2.Transaction).Commit();