这是我的代码:
CREATE TABLE table(
id int(1) UNIQUE,
name varchar(128) NOT NULL)
ALTER TABLE table ADD UNIQUE KEY id (id);
我不确定是否需要第二条语句,但是在插入INSERT INTO table(name)VALUES(“ test”)时,这两种方法都不起作用。它说table.id不能为NULL。我需要怎么做才能使其与NULL(和Auto Increment?)一起使用。用第一列替换id int(1) NOT NULL AUTO_INCREMENT,
它会导致语法错误。
对于自动增量行为,该列必须是INTEGER PRIMARY KEY 。
AUTOINCREMENT关键字强加了额外的CPU,内存,磁盘空间和磁盘I / O开销,如果没有严格要求,则应避免使用。通常不需要。
在SQLite中,类型为INTEGER PRIMARY KEY的列是ROWID的别名(在WITHOUT ROWID表中除外),该别名始终是64位有符号整数
在INSERT上,如果未明确为ROWID或INTEGER PRIMARY KEY列提供值,则将使用未使用的整数..自动填充它。
如果在INTEGER PRIMARY KEY之后出现AUTOINCREMENT关键字,则将更改自动ROWID分配算法,以防止在数据库的生存期内重用ROWID。换句话说,AUTOINCREMENT的目的是防止重复使用先前删除的行中的ROWID。
唯一性不足以触发这种行为; 并且需要使用AUTOINCREMENT来确保单调递增方案。
因此,要在不保证该ID将永远不会被重用的情况下公开代理ROWID ,请使用:
id INTEGER PRIMARY KEY
为确保ID在表/数据库生存期内从未被重用(这是MySQL自动增量和SQL Server标识列的行为),请使用:
id INTEGER PRIMARY KEY AUTOINCREMENT
没有其他类型或不能用于此行为-包括INT
,即使最终具有相同的相似性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句