2010-02-10 52 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.