我在使用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将保留为空并且不会自动递增。有什么想法吗?我设计的表格错了吗?
干杯,
内特
答案 0 :(得分:6)
我建议您在File表上创建一个主键,只使用FileID字段(您有两个字段)。我认为你有一个拼写错误:它是AUTOINCREMENT,(你键入AUTO_INCREMENT)。请参阅:http://www.sqlite.org/autoinc.html