2010-02-10 55 views
1

我目前正在與Oracle數據庫的PHP項目。爲了更新表格,我正在使用的php代碼使用SQL「MERGE INTO」方法遍歷表並查看多個記錄的值是否存在於另一個表中。如果它們還不存在,則將值插入到我的表中。如果這些值已經存在,則沒有任何反應。PHP/Oracle,返回插入的ID從合併到

我想在此之後使用MERGE INTO查詢中創建的自動遞增ID來運行另一個查詢。有沒有辦法獲得新創建的id的數組?我希望得到像mysql_insert_id這樣的東西,但我還沒有找到類似的東西。

謝謝!

回答

1

甲骨文has supported the MERGE syntax since 9i。還沒有嘗試過,但是您可能可以使用MERGE語句中的RETURNING子句...

Oracle uses sequences for handling automatically incremented values。一旦你創建了一個序列,你可以用:

sequence_name.CURVAL 

..to獲得的電流值,像什麼mysql_insert_id將返回。要填充主鍵,你會使用:

sequence_name.NEXTVAL 

要填充在INSERT語句中的主,你會使用:

INSERT INTO your_table 
    (pk_id, .. 
VALUES 
    (your_sequence.NEXTVAL, ...) 

可以使用觸發器作爲替代,但他們贏得不會返回當前值。

+0

結束了觸發器。謝謝! – Jake 2010-02-10 19:13:36

0

什麼是auto_incremented ID? AFAIK,Oracle沒有這樣的事情。您可以通過在表上添加觸發器和序列號來模擬行爲,但肯定沒有與mysql_insert_id()等效的操作。

我認爲你需要回去尋找另一種方式來識別你的記錄。

C.