我目前正在與Oracle數據庫的PHP項目。爲了更新表格,我正在使用的php代碼使用SQL「MERGE INTO」方法遍歷表並查看多個記錄的值是否存在於另一個表中。如果它們還不存在,則將值插入到我的表中。如果這些值已經存在,則沒有任何反應。PHP/Oracle,返回插入的ID從合併到
我想在此之後使用MERGE INTO查詢中創建的自動遞增ID來運行另一個查詢。有沒有辦法獲得新創建的id的數組?我希望得到像mysql_insert_id這樣的東西,但我還沒有找到類似的東西。
謝謝!
我目前正在與Oracle數據庫的PHP項目。爲了更新表格,我正在使用的php代碼使用SQL「MERGE INTO」方法遍歷表並查看多個記錄的值是否存在於另一個表中。如果它們還不存在,則將值插入到我的表中。如果這些值已經存在,則沒有任何反應。PHP/Oracle,返回插入的ID從合併到
我想在此之後使用MERGE INTO查詢中創建的自動遞增ID來運行另一個查詢。有沒有辦法獲得新創建的id的數組?我希望得到像mysql_insert_id這樣的東西,但我還沒有找到類似的東西。
謝謝!
甲骨文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, ...)
可以使用觸發器作爲替代,但他們贏得不會返回當前值。
什麼是auto_incremented ID? AFAIK,Oracle沒有這樣的事情。您可以通過在表上添加觸發器和序列號來模擬行爲,但肯定沒有與mysql_insert_id()等效的操作。
我認爲你需要回去尋找另一種方式來識別你的記錄。
C.
結束了觸發器。謝謝! – Jake 2010-02-10 19:13:36