小编Har*_*ddy的帖子

如何在sqlite3和perl中创建唯一索引?

我正在尝试将值插入数据库,我的数据库表如图所示

$stmt = qq(CREATE TABLE IF NOT EXISTS INFO 
   (

  DeviceName               TEXT    NOT NULL,
  CurrentStatus            INT     NOT NULL,
  ReportTime        TEXT,
  OldStatus         INT            NOT NULL,
  OldReportTime     TEXT           ););
Run Code Online (Sandbox Code Playgroud)

在插入db之前,我正在为DeviceName列创建一个唯一索引,这样每当一个新条目进入具有相同名称的db时,它就不会被插入而是被替换,

$stmt = qq(CREATE UNIQUE INDEX ree ON INFO(DeviceName));
$stmt = qq(INSERT OR REPLACE INTO INFO(DeviceName, CurrentStatus,ReportTime,OldStatus,OldReportTime)
           VALUES ('$FQDN', $currentstatus, '$currenttime', $oldstatus, '$oldtime' ););
my $rv = $dbh->do($stmt) or die $DBI::errstr;
Run Code Online (Sandbox Code Playgroud)

这些是我添加的几行,用于创建唯一索引并在下一个实体使用相同的DeviceName输入时替换.但是,虽然我遵循了这一点,但数据库仍然会多次存储相同的DeviceName.

 #!/usr/bin/perl
 use DBI;
 use strict;
 my $FQDN= "bubbly.bth.se";
 my $currenttime = "Sat Dec  9 02:07:31 2017";
 my $oldtime = "Sat Dec …
Run Code Online (Sandbox Code Playgroud)

sqlite perl

1
推荐指数
1
解决办法
107
查看次数

Perl:如何在不使用max(rowid)的情况下查找sql​​ite数据库中的总行数?

我想找出SQLITE数据库表中的行数,我知道我可以查询使用SELECT COUNT(*) FROM TABLENAME; 但我想使用perl代码获取计数并将其存储到变量中?我可以使用以下代码

my $stmt = qq(SELECT COUNT(*) AS $NUMBEROFROWS FROM TABLENAME)
$rv = $dbh->do($stmt);
Run Code Online (Sandbox Code Playgroud)

要么

my $stmt = qq(SELECT COUNT(*) FROM TABLENAME
              $NUMBEROFROWS = COUNT(*)      );
$rv = $dbh->do($stmt);
Run Code Online (Sandbox Code Playgroud)

请建议我如何计算SQLITE数据库表中的行数并将值存储到变量中?

TIA

sqlite perl

-3
推荐指数
1
解决办法
119
查看次数

标签 统计

perl ×2

sqlite ×2