我目前正在与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