使用Perl SQLite进行Auto_increment

Elf*_*ЯUs 2 sql sqlite perl 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)" ) ;
Run Code Online (Sandbox Code Playgroud)

查询:

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

即使我已将FileID识别为AUTO_INCREMENT和PRIMARY KEY,但当我使用上述查询添加新字段时,FileID将保留为空并且不会自动递增.有什么想法吗?我设计的桌子错了吗?

干杯,

内特

Mig*_*Prz 6

我建议您在File表上创建一个主键,只使用FileID字段(您有两个字段).我认为你有一个拼写错误:它是AUTOINCREMENT,(你键入AUTO_INCREMENT).见:http://www.sqlite.org/autoinc.html

  • 你没有得到该SQL语句的SQL语法错误吗?哦,没错,你可能没有检查 - 除非你确实设置了RaiseError. (3认同)