2011-02-17 109 views
0

我正在編寫觸發器,並且需要使用語句級別觸發器。現在當我這樣做時,我需要以某種方式訪問​​受此觸發器影響的行。我的問題是,我可以訪問類似MSSQL使用的插入和更新表,或者有任何其他方式可以實現我想要做的事嗎?Oracle 10g語句級別觸發器如何訪問受語句級別觸發器影響的行

謝謝!

+0

恕我直言如果你需要訪問該行的值,你真的需要一個「每行」觸發器。 SQLServer存在Inserted和Deleted僞表,因爲該數據庫中沒有每行觸發器,並且沒有更新的僞表。你能詳細說明爲什麼你需要訪問語句觸發器中的單個行值嗎? – jachguate 2011-02-17 18:49:51

回答

2

您需要多個觸發器(或11g中的行級別和語句級別的複合觸發器)。在行級觸發器中,您會看到已更改的行,並將一些數據(主鍵,ROWID或整行取決於您的需要)放置在臨時表,包中定義的集合或在複合觸發器中定義的集合中。在您的語句級觸發器中,您可以遍歷行級觸發器剛剛標識的行。就我個人而言,我還傾向於創建一個before語句觸發器,以便在首次執行語句時仍然保持您所維護的任何結構中的數據的情況下初始化該集合)。