JavaDB SQL-команда избыточна? - PullRequest
3 голосов
/ 29 апреля 2010

Исправьте меня, если я ошибаюсь, но эта команда SQL:

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

не нуждается в части NOT NULL, поскольку первичный ключ по умолчанию считается не нулевым.

Разве это не избыточно?

(я не уверен, что могу просто протестировать его и согласиться с результатом, в долгосрочной перспективе программирование полно неожиданностей)

Я использую JavaDB / Derby.

1 Ответ

4 голосов
/ 29 апреля 2010

Да, первичный ключ - это комбинация уникального индекса и ненулевого ограничения. Последний определяется стандартной функцией 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.

Это была ошибка, и она была исправлена ​​.

...