3

如果我错了,请纠正我,但是这个 SQL 命令:

create table MYTABLE (ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1))

不需要 NOT NULL 部分,因为默认情况下假设主键不为空。

这不是多余的吗?

(我不能安全地测试它并同意结果,从长远来看,编程充满惊喜)

我正在使用 JavaDB/Derby。

4

1 回答 1

4

是的,主键是唯一索引和非空约束的组合。后者由 SQL99 标准特性 E141-08 定义。

似乎在旧版本的 Derby 中,除非列也被声明为可为空,否则无法创建主键:

> PRIMARY KEY does not imply NOT NULL. Derby issues error message:

ij> create table tab (i integer primary key);
ERROR 42831: 'I' cannot be a column of a primary key or unique key because it
can contain null values.

这是一个错误,它已被修复

于 2010-04-29T14:30:26.173 回答