|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
Get inside! Sample the range of functionality easily built with JMSL Library for Time Series Data Analysis, Heat Maps, Portfolio Optimization, Monte Carlo Simulation, Stock Price Charting and more. Download Now! |
|
#1
|
|||
|
|||
|
Perl DBI:Oracle last inserted id
I'm coding a web application in perl and oracle. Whats the best way to get the id of a row just inserted? The DBI function last_insert_id seems great, but I can't make it work or find any examples online.... anyone have experience?
Here's the man page for last_insert_id: http://search.cpan.org/~timb/DBI/DBI.pm#last_insert_id thanks! |
|
#2
|
|||
|
|||
|
That's for autoincrement fields in Access and the like.
If the table has a sequence or a unique key that counts upward and the key column is indexed try - Code:
SELECT ROWID
from mytable
where mytable.unique_key in
(select
max(mytable.unique_key)
from mytable);
I'm assuming your idea of an id is ROWID. |
|
#3
|
|||
|
|||
|
Aha, the dbi doc alludes to giveing the method the sequence as part of the \%attr argument. Since oracle uses triggers and sequences for incrementing primary keys/id's I thought maybe it could work.
Selecting the max id could always work, presuming no new rows have been added in between the queries. Thanks! |
|
#4
|
|||
|
|||
|
assume you "create table foo(id integer)" and "create sequence foo_seq"
... use DBI qw(:sql_types); my $dbh = DBI->connect('dbi:Oracle:','scott','tiger') || die $DBI::errstr; $sth = $dbh->prepare( 'insert into foo(id) values (foo_seq.nextval) returning id into ?') || die $DBI::Errstr; my $new_id; $sth->bind_param_inout(1,\$new_id,38); $sth->execute() || die $DBI::errstr; print "new id = $new_id"; $sth->finish; $dbh->disconnect; --- cool eh? works in Oracle 9i and above. The "RETURNING INTO " places whatever set of values you just inserted into your bind variables. |
![]() |
| Viewing: Dev Shed Forums > Databases > Oracle Development > Perl DBI:Oracle last inserted id |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|