[〜#〜] dbi [〜#〜] ( DBD :: mysql )を使用して挿入された最後の行をフェッチするにはどうすればよいですか?
コードサンプル:
my $sth = $dbh->prepare('INSERT INTO a ( x, y, z ) VALUES ( ?, ?, ? )');
$sth->execute( $x, $y, $z );
上記のprepare
ステートメントによって挿入されたデータにアクセスするにはどうすればよいですか?プライマリID(AUTOINCREMENT
)の値を取得する必要があります。
UPDATE:
DBD :: mysql のドキュメントから:
この属性にアクセスする別の方法は、
$dbh->{'mysql_insertid'}
を使用することです。
これはステートメントハンドルのプロパティです。そのようなIDにアクセスできるはずです。
$sth->{mysql_insertid}
データベースにとらわれないアプローチは [〜#〜] dbi [〜#〜] の _last_insert_id
_ メソッドを使用することです。このアプローチは、特定のデータベースへの依存を減らすのに役立ちます。
$ dbh-> last_insert_id
$rv = $dbh->last_insert_id($catalog, $schema, $table, $field);
可能であれば、挿入されたばかりの行を「識別する」値を返します。通常、これはデータベースサーバーによってauto_incrementまたはシリアルタイプの列に割り当てられた値です。ドライバがメソッドをサポートしていない場合、または値を判別できない場合は、undefを返します。
SELECT LAST_INSERT_ID()
query も必要なものを返します。