スポンサーリンク

データベースにINSERTで値を挿入したあとに、INSERTした後にAUTO
INCREMENTされたID(Last Insert ID)の値を取得したりします。

Perl の DBI モジュールで最後に挿入したIDを取得するには、
last_insert_idを利用します。

書式
$rv = $dbh->last_insert_id($catalog, $schema, $table, $field);
$rv = $dbh->last_insert_id($catalog, $schema, $table, $field, \%attr);

パラメータの意味
$catalog データベース名と同じ
$schema データベース名
$table テーブル名
$field カラム名
\%attr ドライバの属性

サンプルソース
#!/usr/local/bin/perl -w

# create table users(id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
#		name varchar(32));
# insert into users(name) values("a");
# insert into users(name) values("b");
# insert into users(name) values("c");

use strict;
use warnings;
use DBI;

my $dbi = 'mysql';
my $database = 'test';
my $hostname = 'localhost';
my $dsn = "dbi:$dbi:database=$database;host=$hostname";
my $user = 'root';
my $password = '';

#my $dbh = DBI->connect($dsn, $user, $password, {'RaiseError' => 1} )
my $dbh;
my $rv;
$dbh = DBI->connect($dsn, $user, $password, {'RaiseError' => 1} )
	or die $dbi->errstr;
my $sth = $dbh->prepare( qq {
		INSERT INTO users(name) VALUES(?)
	} )
	or die $dbh->errstr;
$rv = $sth->execute("d")
	or die $dbh->errstr;
print "$rv\n";
$rv = $dbh->last_insert_id($database, $database, 'users', 'id');
print "last insert id: $rv\n";
$dbh->disconnect();

DBMSに依存しないのは嬉しいですが Perl DBIの場合、かなり冗長な
気がします。4つも引数が必要なんて。。。

MySQLだともっと簡単に取得できます。
[MySQL 最後にINSERT(挿入)したIDを取得する方法|2008-03-21-2]
参照しているページ (サイト内): [2009-05-16-2] [2009-05-16-1] [2008-08-25-1] [2008-08-24-2] [2008-08-24-1]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー