1

last_insert_id新しく挿入された行を返します。

Perl 5.18 では、すべて問題なく動作しています。

フォーラムから、接続が失われていることが原因である可能性があることを理解しています。しかし、トレースには何も表示されません。

コードサンプルは次のとおりです。

  $self->_dbx->query(q{DROP TABLE IF EXISTS user_tbl;});

  $self->_dbx->query(q{
    CREATE TABLE user_tbl(
      user_id INT NOT NULL AUTO_INCREMENT,
      user_name VARCHAR(100) NOT NULL,
      PRIMARY KEY ( user_id )
    );
  });

  $self->_dbx->query(q{
    INSERT INTO user_tbl 
              (user_name)
      VALUES  ('DUMMY1');
  });

  print Dumper $self->_dbx->last_insert_id(undef, undef, undef, "user_id" ) or warn "Warn: Can not get it?";

  print Dumper $self->_dbx->query(q{
    SELECT * FROM user_tbl
      WHERE user_name= 'DUMMY1';
  })->hash;

DBI_TRACE:

    <- ping= ( 1 ) [1 items] at Driver.pm line 28
    <- prepare('
    CREATE TABLE user_tbl(
      user_id INT NOT NULL AUTO_INCREMENT,
      user_name VARCHAR(100) NOT NULL,
      PRIMARY KEY ( user_id )
    );
  ')= ( DBI::st=HASH(0x70f4468) ) [1 items] at Simple.pm line 168
    <- execute= ( '0E0' ) [1 items] at Simple.pm line 187
    <- finish= ( 1 ) [1 items] at Simple.pm line 286
    <- FETCH('Active')= ( 1 ) [1 items] at Connector.pm line 129
    <- FETCH('Active')= ( 1 ) [1 items] at Connector.pm line 129
    <- ping= ( 1 ) [1 items] at Driver.pm line 28
    <- prepare('
    INSERT INTO user_tbl 
              (user_name)
      VALUES  ('DUMMY1');
  ')= ( DBI::st=HASH(0x70f47c8) ) [1 items] at Simple.pm line 168
    <- execute= ( 1 ) [1 items] at Simple.pm line 187
    <- finish= ( 1 ) [1 items] at Simple.pm line 286
    <- FETCH('Active')= ( 1 ) [1 items] at Connector.pm line 129
    <- FETCH('Active')= ( 1 ) [1 items] at Connector.pm line 129
    <- ping= ( 1 ) [1 items] at Driver.pm line 28
    <- last_insert_id(undef, undef, ...)= ( '0' ) [1 items] at Simple.pm line 216

標準出力:

$VAR1 = '0';
$VAR1 = {
          'user_id' => 1,
          'user_name' => 'DUMMY1'
        };

バージョン:

  • パール => 5.22
  • DBD::mysql => 4.043
  • MySQL サーバー 5.6
4

0 に答える 0