【发布时间】:2016-04-23 18:37:43
【问题描述】:
我在 Perl 中有以下绑定查询。
$sth = $dbh->prepare("insert into tbl_name values(?,?)");
$sth->execute($val1, $val2);
但是,如果tbl_name 表中的第一列是自增主键怎么办?我该如何处理该字段?
【问题讨论】:
标签: mysql database perl sql-insert
我在 Perl 中有以下绑定查询。
$sth = $dbh->prepare("insert into tbl_name values(?,?)");
$sth->execute($val1, $val2);
但是,如果tbl_name 表中的第一列是自增主键怎么办?我该如何处理该字段?
【问题讨论】:
标签: mysql database perl sql-insert
这更像是一个 SQL 问题而不是 Perl 问题。
如何处理[自动增量]字段?
根本不要指定它。明确命名您拥有值的所有列并忽略其他列。
这将导致它们采用默认值,在自动增量字段的情况下,这将是下一个增量。
$sth = $dbh->prepare("insert into tbl_name (column_name) values (?)");
$sth->execute($val2);
【讨论】:
你可以只给出第二列的值,像这样
my $sth = $dbh->prepare('INSERT INTO tbl_name (col2) VALUES (?)');
$sth->execute($val2);
【讨论】:
正如其他人所说,您只是不通过明确插入哪些字段来指定字段的值,正如他们所说:
my $sth = $dbh->prepare('INSERT INTO tbl_name (col2) VALUES (?)');
$sth->execute($val2);
会足够好。
我只是想补充一点,你可以使用
$dbh->{'mysql_insertid'}
获取分配给行的 id,这通常会派上用场。
【讨论】:
$sth = $dbh->prepare("insert into tbl_name values(?,?)");
$sth->execute(undef, $val2);
或
$sth = $dbh->prepare("insert into tbl_name (col2_name) values (?)");
$sth->execute($val2);
【讨论】: