Java DB SQL命令多余?

时间:2010-04-29 14:27:19

标签: java sql derby javadb

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

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

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

这不是这种还原剂吗?

(我只是测试它并且在结果上达成一致意见是不安全的,编程充满了长期的惊喜)

我正在使用JavaDB / Derby。

1 个答案:

答案 0 :(得分: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.

这是一个错误,它一直是fixed