3

私が間違っている場合は訂正してください。ただし、このSQLコマンドは次のとおりです。

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

主キーはデフォルトでnullではないと想定されているため、NOTNULL部分は必要ありません。

これは冗長ではありませんか?

(私はそれをテストして結果に同意するだけでは安全ではありません。プログラミングは長期的には驚きに満ちています)

私はJavaDB/Derbyを使用しています。

4

1 に答える 1

4

はい、主キーは一意のインデックスとnull以外の制約の組み合わせです。後者は、SQL99標準機能E141-08によって定義されています。

古いバージョンのDerbyでは、列もnull許容であると宣言されていない限り、主キーを作成できなかったようです。

> 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 に答える