使用Perl SQLite进行Auto_increment

时间:2011-03-18 07:26:47

标签: 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识别为AUTO_INCREMENT和PRIMARY KEY,但当我使用上述查询添加新字段时,FileID将保留为空并且不会自动递增。有什么想法吗?我设计的表格错了吗?

干杯,

内特

1 个答案:

答案 0 :(得分:6)

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