我有一個包將插入一個表中的單個父記錄,並在parent_id上具有FK的另一個表中的相關子記錄。這些函數中的每一個都將由外部程序調用,並且所有插入子項的調用都可能不包含在同一事務中。當我在PL/SQL中插入子記錄時,應該如何保持指向父記錄的指針?
我想知道是否有任何方法可以避免手動跟蹤parent_id並將它傳遞到每個過程的參數列表中。我已經考慮過使用sys_context,但不認爲這將工作,因爲它不會在一個單一的事務。
是否有任何其他策略,或者我只需要吸取它並將parent_id傳遞給每個方法?
我以前沒有使用過包變量,但是從我讀過的內容中可以看出,它們會持續一段時間。通過一個會話將值設置爲一個包變量的值是否對任何其他會話可見,或者它們是否完全隔離?基本上,每個會話都會有這個變量的副本來完成它所希望的事情,或者一個會話是否可以爲另一個會話更改此變量的值? – 2010-06-28 15:08:03
每個會話都有自己的副本,他們不能看到對方。因此,只要在整個交易過程中維持一個會話,即在「有狀態」環境中,這種方式就可以正常工作。 – 2010-06-28 15:12:14