Авто_инкремент с Perl SQLite - PullRequest
2 голосов
/ 18 марта 2011

У меня проблемы с автоматическим приращением в SQLite с использованием Perl.

Дизайн базы данных:

$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 остается пустым и не увеличивается автоматически. Какие-нибудь мысли? Я неправильно спроектировал таблицы?

Приветствия

Nate

1 Ответ

6 голосов
/ 18 марта 2011

Я рекомендую вам создать первичный ключ в таблице файлов исключительно с полем FileID (у вас есть два поля).И я думаю, у вас есть опечатка: это AUTOINCREMENT (вы вводите AUTO_INCREMENT).Смотрите это: http://www.sqlite.org/autoinc.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...