为什么以下无效,我在这里不知所措?
'CREATE TABLE IF NOT EXISTS Mons(id int PRIMARY KEY NOT NULL AUTO_INCREMENT, keyword VARCHAR(255) NOT NULL);'
来自node.js的sqlite3,在coffeescript中为:
db.parallelize( () ->
db.run('CREATE TABLE IF NOT EXISTS Mons(id int PRIMARY KEY NOT NULL AUTO_INCREMENT, keyword VARCHAR(255) NOT NULL);')
)
确切错误:
Error: SQLITE_ERROR: near "AUTO_INCREMENT": syntax error
at Error (native)
答案 0 :(得分:1)
sqlite中自动增量主键的语法是
INTEGER PRIMARY KEY AUTOINCREMENT
而不是
int PRIMARY KEY NOT NULL AUTO_INCREMENT
如果省略AUTOINCREMENT
关键字,您的autoincrement behavior会略有不同。
答案 1 :(得分:1)
使用AUTO_INCREMENT不是最佳选择,除非您想要db的生命周期中使用唯一键。如果删除记录,则永远不能再使用该ID。这个约束会降低你的数据库速度并使用更多的内存,所以如果你不需要唯一的密钥,我建议删除它,因为PRIMARY KEY已经有一个约束来抵制任何相同的主键。