2011-03-18 36 views
2

我在使用Perl的SQLite中自動增加時遇到問題。使用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和主鍵,當我使用上面添加一個新領域查詢FileID保留爲空,並且不會自動增加。有什麼想法嗎?我設計的表錯了嗎?

乾杯,

內特

回答

6

我建議你創建一個領域寫到FileID專(你有兩個域)上的文件表的主鍵。我認爲你有一個錯字:它是AUTOINCREMENT,(你輸入AUTO_INCREMENT)。看到這個:http://www.sqlite.org/autoinc.html

+0

AUTO_INCREMENT是mysql的語法。確實令人困惑。 – Dallaylaen 2011-03-18 10:02:07

+3

你沒有得到該SQL語句的SQL語法錯誤嗎?哦,是的,你可能沒有檢查 - 除非你確實設置了RaiseError。 – bart 2011-03-18 11:26:11

+0

嗯......好的,我會給你一個鏡頭。謝謝! – 2011-03-18 20:26:01