2010-04-29 3 views
3

Поправьте меня, если я ошибаюсь, но эта команда SQL:Команда JavaDB SQL reduntant?

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

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

Разве это не красноречиво?

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

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

ответ

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.

+1

О, Боже мой! Единороги вернулись! XD –

Смежные вопросы