Michał M.

Michał M. konsultant IT

Temat: Wstawienie rekordu do tabeli poza transakcją w Oracle 10g

Czy ktoś się może orientuje jak w Oracle wstawić rekord to tabeli poza transakcją? Chodzi mi czy istnieje odpowiednik klauzuli WITH NC z DB2 tak że robię np instrukcje:

INSERT INTO tabela1 VALUES (...);

INSERT INTO tabela2 VALUES (...) WITH NC;

if (...)
COMMIT;
else
(...)
ROLLBACK;

Dla DB2 w takim przykładzie w przypadku COMMIT zapiszą się oba rekordy, a dla ROLLBACK tylko drugi.
Grzegorz G.

Grzegorz G. ASE / Systems
Architect, Syniverse

Temat: Wstawienie rekordu do tabeli poza transakcją w Oracle 10g

PRAGMA AUTONOMOUS_TRANSACTION

jest najbliższe temu co potrzebujesz - ale do tego potrzebujesz oddzielnego bloku PL/SQL tzn.

SQL> create table t(id number, value number);

Table created.

SQL> create or replace procedure p (p_id number, p_value number)
2 as
3 pragma autonomous_transaction;
4 begin
5 insert into t values (p_id, p_value);
6 commit;
7 end;
8 /

Procedure created.

SQL> begin
2 insert into t values (1, 2);
3 p(2, 3);
4 rollback;
5 end;
6 /

PL/SQL procedure successfully completed.

SQL> select * from t;

ID VALUE
---------- ----------
2 3

konto usunięte

Temat: Wstawienie rekordu do tabeli poza transakcją w Oracle 10g

Grzegorz G.:
PRAGMA AUTONOMOUS_TRANSACTION

Być może warto też wspomnieć, że w procedurach z tą pragmą nie można używać database linków.



Wyślij zaproszenie do