创建SQL表是否允许NULL(唯一键?)

g19992

这是我的代码:

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

  1. AUTOINCREMENT关键字强加了额外的CPU,内存,磁盘空间和磁盘I / O开销,如果没有严格要求,则应避免使用。通常不需要。

  2. 在SQLite中,类型为INTEGER PRIMARY KEY的列是ROWID的别名(在WITHOUT ROWID表中除外),该别名始终是64位有符号整数

  3. 在INSERT上,如果未明确为ROWID或INTEGER PRIMARY KEY列提供值,则将使用未使用的整数..自动填充它。

  4. 如果在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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建SQL表是否允许NULL(唯一键?)

来自分类Dev

从没有主键的表中使用唯一键创建视图

来自分类Dev

为多个参数创建唯一键(缓存键)

来自分类Dev

在插入SQL表时如何检查群集的唯一键

来自分类Dev

在唯一键和值的 SQL 表中添加或检索

来自分类Dev

使唯一键与NULL值一起使用?

来自分类Dev

如何创建唯一键形式对象NSArray的NSArray?

来自分类Dev

如何在KeystoneJS中创建唯一键

来自分类Dev

如何在mongoDB中创建复合唯一键

来自分类Dev

如何在Hybris中创建复合唯一键

来自分类Dev

映射对象数组时创建唯一键

来自分类Dev

MySql 在两列上创建唯一键

来自分类Dev

联接表上2列的唯一键

来自分类Dev

不按唯一键搜索哈希表

来自分类Dev

Android唯一键

来自分类Dev

MySQL:唯一键

来自分类Dev

唯一键 [定制]

来自分类Dev

每个分区的sql server唯一键

来自分类Dev

每个分区的sql server唯一键

来自分类Dev

如果未删除 SQL 唯一键

来自分类Dev

sql server:唯一约束生成唯一键和唯一索引

来自分类Dev

sql server:唯一约束生成唯一键和唯一索引

来自分类Dev

sql server:唯一约束生成唯一键和唯一索引

来自分类Dev

MSSQL:在创建表时添加唯一约束并允许 NULL

来自分类Dev

Oracle是否继承了诸如主键,唯一键和外键之类的约束?

来自分类Dev

唯一键(不是主键)可以是其他表的外键吗?

来自分类Dev

用唯一键返回多行?

来自分类Dev

禁用主/唯一键排序

来自分类Dev

MariaDB主键与唯一键