sql - 使用 Perl SQLite 自动递增

标签 sql perl sqlite auto-increment

我在使用 Perl 的 SQLite 中自动增量时遇到问题。

数据库设计:

$dbh->do( "CREATE  TABLE IF NOT EXISTS `Users` (
  `UserID` VARCHAR(45) NOT NULL PRIMARY KEY UNIQUE ,
  `First_Name` VARCHAR(45) NOT NULL ,
  `Last_Name` VARCHAR(45) NOT NULL ,
  `Email` VARCHAR(45) NOT NULL ,
  `Password` VARCHAR(45) NOT NULL )" ) ;

$dbh->do( "CREATE  TABLE IF NOT EXISTS `Files` (
  `FileID` INTEGER AUTO_INCREMENT ,
  `UserID` VARCHAR(45) NOT NULL ,
  `File_Name` VARCHAR(45) NOT NULL ,
  `File` BLOB NULL ,
  PRIMARY KEY (`FileID`, `UserID`) ,
  CONSTRAINT `fk_Files_Users1`
    FOREIGN KEY (`UserID` )
    REFERENCES `Users` (`UserID` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)" ) ;

查询:

$dbh->do( "INSERT INTO Files ( UserID, File_Name )
                VALUES ( '$_[0]', '$_[1]' )" ) ;

尽管我已将 FileID 标识为自动增量和主键,但当我使用上述查询添加新字段时,文件 ID 仍保留为空并且不会自动递增。有什么想法吗?我的表格设计错了吗?

干杯,

内特

最佳答案

我建议您在文件表上仅使用 FileID 字段创建主键(您有两个字段)。我认为您有一个拼写错误:它是 AUTOINCRMENT(您输入 AUTO_INCRMENT)。看到这个:http://www.sqlite.org/autoinc.html

关于sql - 使用 Perl SQLite 自动递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5349161/

相关文章:

MySQL 多对多表连接性能慢

regex - 在 Perl 中的两个符号之间找不到模式时如何删除模式?

perl - 子程序作为数组成员

mysql - sql计算多行类里面的当前学生

mysql - 根据不同的标准求和值

php - 如何使用PHP将日期输入到mysql数据库中

php - 我的 SQL 语句有什么问题?如何正确使用JOIN?

php - Perl pack() 函数和 "B"格式化字符到 Php

c# - 如何使用C#将自定义对象保存到Windows Phone8上的sqlite数据库中?

python - SQLAlchemy 过滤器 in_ 运算符