Perl中的数据库更新操作

对任何数据库的Perl UPDATE操作意味着更新数据库表中已经可用的一个或多个记录。以下是更新所有SEX为'M'的记录的过程。在这里,我们将所有男性的年龄提高一年。这将采取三个步骤-

  • 根据所需条件准备SQL查询。这将使用 prepare() API完成。

  • 执行SQL查询以从数据库中选择所有结果。这将使用 execute()  API完成。

  • 释放语句句柄。这将使用 finish() API完成

  • 如果一切正常,请执行此操作,否则您可以回滚完整的事务。有关提交和回滚API,请参见下一部分。

my $sth = $dbh->prepare("UPDATE TEST_TABLE SET AGE = AGE + 1 WHERE SEX = 'M'");
$sth->execute() or die $DBI::errstr;
print "更新的行数:" + $sth->rows;
$sth->finish();
$dbh->commit or die $DBI::errstr;

使用绑定值

有时可能没有事先给出条件。因此,您可以使用绑定变量,该变量将在运行时获取所需的值。Perl DBI模块使用问号代替实际值,然后execute()在运行时通过API传递实际值。以下是示例-

$sex = 'M';
my $sth = $dbh->prepare("UPDATE TEST_TABLE SET AGE = AGE + 1 WHERE SEX = ?");
$sth->execute('$sex') or die $DBI::errstr;
print "更新的行数:" + $sth->rows;
$sth->finish();
$dbh->commit or die $DBI::errstr;

在某些情况下,您想设置一个值,该值不会事先提供,因此可以按以下方式使用绑定值。在此示例中,所有男性的收入将设置为10000。

$sex = 'M';
$income = 10000;
my $sth = $dbh->prepare("UPDATE TEST_TABLE SET INCOME = ? WHERE SEX = ?");
$sth->execute( $income, '$sex') or die $DBI::errstr;
print "更新的行数:" + $sth->rows;
$sth->finish();