数据库
首页 > 数据库> > JavaDB SQL命令冗余吗?

JavaDB SQL命令冗余吗?

作者:互联网

如果我错了,请纠正我,但是此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.

解决方法:

是的,主键是唯一索引和非空约束的组合.后者由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.

标签:derby,javadb,sql,java
来源: https://codeday.me/bug/20191106/2000179.html