2016-04-11 28 views
0

Sadece bir veritabanında bir veritabanı bağlantısı ve değil mevcut oturumun verileriyle eklenen/güncellenen verileri işlemenin bir yolu var mı? Yoksa bir ve aynı mı sayılırlar?Oracle PLSQL - Yalnızca veritabanı bağlantısını sağla

INSERT INTO main_database.main_table(value1, value2) 
VALUES (1 , 2) 

INSERT INTO [email protected]_link(value3, value4) 
VALUES (3 , 4) 

Ve bir tek veritabanı bağlantı tablo için taahhüt yapın: Örneğin

?

Neden bunu yapmak istersiniz: Veritabanı veritabanı (parasal) işlemler için (ayrı bir sunucuda işlenir) ana veritabanı (çoklu) kayıtlar içindir. Kısıtlamalardan herhangi birinin başarısız olup olmadığını kontrol etmek için öncelikle kayıtları güncellemek istiyorum, ancak işlem tamamlanana kadar veriyi işlemek değil. İşlem başarısız olursa, dağınık olabilecek ekleri/güncellemeleri silme/geri alma çabalarını kaydetmek için kayıtları geri almak istiyorum.

Var olduğunu sanmıyorum ama bir yol olduğunu umuyorum. Şimdiden teşekkürler.

+0

Bağlam nedir? İki deyim arasında bir kayıt noktası oluşturabilir, kaydetme noktasına geri dönebilir ve ardından işlem yapabilirsiniz. Fakat bu, ilk ifadeden önce hiçbir açıklanmayan ifadenin bulunmadığını ve iki iş dizisini düzgün bir şekilde ayırabileceğinizi varsayar. Ayrıca, her zaman uzaktaki değişiklikleri yapmak istediğinizi biliyorsanız, yalnızca ilk ifadeden sonra açık bir taahhüt vermeniz daha mantıklı olacaktır. –

+0

Temel olarak, cevap hayır. Ama bunun için ne yapmak istediğinizi anlamak için uğraşıyorum. Bize biraz daha bilgi verir misiniz lütfen? –

+0

Sorumu güncelledim. – Mocking

cevap

1
create or replace procedure proc_1 (i IN number) 
as 
    PRAGMA AUTONOMOUS_TRANSACTION; 
BEGIN 
    INSERT INTO [email protected]_sid (id, description) 
    VALUES (i, 'Description for ' || i); 
    COMMIT; 
END; 
/

create or replace procedure proc_base (i IN number) 
as 
begin 
    insert into local_tab (id) values (i); 
    proc_1(i); 
    rollback; 
end; 
/
+0

Bu benim için çalıştı. Çok teşekkürler. – Mocking

0

sayılı

insert bir pl/SQL ise o zaman özerk bir işlemde ilk insert yayınlanabilir, ancak ekin biraz daha farklı diğer işlevsellik yokluğunda ....; işlemek; ekler ...

+0

Özür dilerim, bu PLSQL'de. Özerk bir işlem örneği verebilir misiniz? – Mocking

+0

Aşağıda sizin için çalışabilecek bir örnek pl/sql gönderdim, bunu deneyin –