私はAUTO_INCREMENT
を追加するとid
列が自動的に1から始まる連続番号を生成できると読んでいましたが、その場合はNOT NULL
とUNIQUE
を定義する必要はないと思われます。テーブルを作成するときにNOT NULL
とAUTO_INREMENT
を使用してオンラインで多くの例が表示されるのはなぜですか?MySQL: `AUTO_INCREMENT`を使用すると` ID`カラムが `NOT NULL`で定義されるのはなぜですか?
答えて
Per the documentation null-not-nullとして定義されたauto_idにnull値を割り当てると、nullが次の順次値に置き換えられます。 IDは主キー(またはキーの一部)である可能性が高いため、null値は使用しないでください。
また、per this exampleは、nullでないことを指定していない場合、MySQLがこれを提供します。
ありがとうございました...しかし、まだ少し混乱しています。つまり、 'NOT NULL'が指定されていれば、単に' NULL'を指定することができ、次の連続番号が使われるということです。しかし、 'AUTO_INCREMENT'はそれをやっていませんか?また、あなたの答えの終わりに向かって、もしあなたが 'NOT NULL'を追加しなければ、システムはそれをあなたのためにやってくれると言います...そして、それは私が期待したものです。その時のポイントは?私の質問は、システムがとにかくそれを追加した場合、人々がまだ 'NOT NULL'を追加するのを悩ます理由です。 – Grateful
別の答え:「適切な機能を実現するには、列が値を必要とする場合は、NOT NULLと宣言する必要があります。そういうわけで、人々は気が狂っています。これは、プロジェクト全体がgotoやグローバルで1つのファイルに収まるときに人々がOOPデザインパターンを使用する理由を尋ねるようなものです。 – DanFromGermany
@Grateful MySQLが自動的にそれを追加している場合、人々がそれを指定しているのか、それともMySQLによって提供されているのかをどうやって知ることができますか? (人々はテーブルデザインをリサイクルしてから、 'show create mytable'を実行します) ダンが示しているように、機能をよく知らないユーザーがコードから理解できるようにフィールドは決してnullにはなりません。 –
NOT NULL
が定義されていれば、文書を再読した後に値を挿入するときに値NULL
を使用して自動的に次の連続番号を割り当てることができます。 NOT NULL
が定義されていない場合、値0を使用して次の連続番号を割り当てることができます。また、UNIQUE
を定義する必要はないことに留意されたい。なぜなら、IDは、通常、これを達成するPRIMARY KEY
と組み合わせて使用されるからである。
明示的に定義する必要はありませんが、not-nullとして定義する必要があります。 ( 'SHOW CREATE TABLE'を実行すると' NOT NULL'を表示しない 'auto_increment'フィールドを持つテーブルを作成してみてください)。 –
- 1. 、なぜnull!==未定義はtrueですが、null ==未定義もtrueですか?
- 2. mySQLのID値はauto_incrementですが、ネットビーンで生成されたようです。
- 3. MySQL auto_incrementカラムがfloatとして宣言されました
- 4. インスタンスモードでp5.jsを使用するときに定数が定義されないのはなぜですか?
- 5. なぜobject = nullが常に使用されるのですか?
- 6. チェックボックスを使用すると、定義されていないインデックスエラーが発生するのはなぜですか?
- 7. MySQLカラム定義
- 8. DoctrineはMySQLの生成カラムを定義できますか?
- 9. .getElementById( "name_val" + id).innerHTMLがnullであるのはなぜですか?
- 10. ObjectでequalsとhashCodeが定義されているのはなぜですか?
- 11. Grailsがデフォルトでnot-nullカラムを生成するのはなぜですか?
- 12. AUTO_INCREMENTカラムの値が
- 13. 'req'変数が未定義とみなされるのはなぜですか?
- 14. functioから常に返される値がnullまたは未定義なのはなぜですか?
- 15. function.callを使用しているときにobject.function.thisが定義されていないのはなぜですか?
- 16. magentoセットアップスクリプトでauto_incrementの値を設定できないのはなぜですか?
- 17. なぜauto_incrementはアンダースコアで "スペル"されていますか?
- 18. MySQLのauto_incrementのステップサイズはどのように決定されますか
- 19. のMysql VB.NET:DataGridViewのヌル例外エラーから隠れカラム(カラムがNULLでない)
- 20. NULLカラムに対してWHERE句を使用すると、mySQL selectクエリで結果が返されません。
- 21. auto_increment idを使用しないスフィンクス
- 22. アノテーションを定義するのに@interfaceが使用されるのはなぜですか?
- 23. SQLカラム定義:デフォルト値で、nullではない冗長?
- 24. 使用後に別の特性で定義されたimplicitsがコンパイルエラーになるのはなぜですか?
- 25. オブジェクトを定義するときに(JavaScript)ワーカーでこれを使用できないのはなぜですか?
- 26. MySQLが引用符付きのカラム名を返すのはなぜですか?
- 27. サブクラスでスーパー(資格)を使用すると、スーパークラスで定義されているときにReferenceErrorがスローされるのはなぜですか?
- 28. reduxとreact.jsを使用すると、私の小道具が「未定義」になるのはなぜですか?
- 29. 同じクラスでメソッドが定義されていると、宣言されていない識別子 'downloadDataFromURL'が使用されるのはなぜですか?
- 30. LoadableDetachableModel.detachがtransientModelObject = nullを設定するのはなぜですか?
「NULL」のことは明白ではないかもしれませんが、もちろんキーは「UNIQUE」にする必要があります。この数字は、逐次であることも保証されていません。 – DanFromGermany