1

私はデータベースを持っていて、その中にデータを入れています。キーと呼ばれるノードが1つあります。これは、主キーと他のノードです。これで、テーブルにデータを配置するときに、このキーノードを除くすべてのノードにデータを配置します。新しいエントリがあるときに0から自動的に増加させるにはどうすればよいですか?スクリプトを実行してデータベースに何かを配置すると、ノードにすべてのデータが正しくあり、キーの値が0であることがわかります。スクリプトを再度実行すると、エラーが発生します。

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'' 

私が理解していることから、私はこのノードに何も渡さないので、データベースは私が再び0引数を渡していると「考えている」ので、エラーが発生します。新しいエントリがあるたびに自動インクリメントするように修正するにはどうすればよいですか?

4

4 に答える 4

4

フィールドを自動インクリメントとして設定する必要があります。ALTER TABLE次のようなステートメントを実行する必要があります。

ALTER TABLE table_name
MODIFY `key` MEDIUMINT NOT NULL AUTO_INCREMENT
于 2013-01-15T01:49:16.813 に答える
3

0 ではなく 1 から開始します。したがって、最初のレコードは ID 番号 1 です。

どのデータベースを使用していますか? postgres では、数列を登録します。私のSQLでは、列の属性を指定するときにAUTO_INCREMENTを使用するだけです

于 2013-01-15T01:52:09.593 に答える
3

MySQL では、テーブルを定義するときに AUTO_INCREMENT キーワードを使用してテーブルを宣言し、この動作を実現します。

例:

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
) ENGINE=MyISAM;

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

INSERT データでは、主キーの値を指定しません。MySQL は、キーに対して次に利用可能な整数値を自動的に使用します。

アップデート

これは、PHP My Admin 内で直接変更できます。問題のテーブルに移動してから、

操作 -> テーブル オプション -> 自動インクリメント

于 2013-01-15T01:47:56.893 に答える
3

ID MEDIUMINT NOT NULL AUTO_INCREMENT

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

于 2013-01-15T01:48:49.523 に答える