13

ALTERTABLE tada_prodaction_6_weekly COLUMN idINT NULL AUTO_INCREMENTUNIQUEAFTERを追加しますmember_id;

作品、

だから私は、最初の列として列を追加することを考えました

ALTER TABLE `tada_prod`.`action_6_weekly`     ADD COLUMN `id` INT NULL AUTO_INCREMENT UNIQUE BEFORE `code`;

しかし、構文エラーが発生します。正しい構文は何ですか?

4

4 に答える 4

23
ALTER TABLE `tada_prod`.`action_6_weekly`
ADD COLUMN `id` INT NULL AUTO_INCREMENT UNIQUE FIRST;
于 2010-08-04T03:14:28.017 に答える
10

列を追加できるのは、特定のフィールドの後にのみ、または最初は前ではありません。特定のファイルの後に列を追加するためのmysqlクエリは次のとおりです。
ALTER TABLE table_name ADD COLUMN column_name VARCHAR(30) AFTER column_name

于 2014-01-10T08:32:32.063 に答える
1

実際、

alter table table_name ADD column_name VARCHAR(12) NOT NULL BEFORE specific_column_name;

このコマンドはmySQL構文では許可されていません。あなたがそれを使うならば、私はあなたが得ると思います

「エラー1064:SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、1行目の「specific_column_name」の近くで使用する正しい構文を確認してください。」メッセージ。

あなたが試すことができます:

ALTER TABLE table_name ADD column_name VARCHAR(12) NOT NULL FIRST;
于 2014-04-19T10:19:18.840 に答える
0

@phpの回答を拡張すると、BEFOREを含めない理由、とを使用してのすべての効果をBEFORE簡単に達成できるためだと思います。AFTERFIRST

例:

たとえば、最初は次のようなリレーショナルスキーマがあります。

+----------------------+
| name | age | address |
+----------------------+ 

そして、何らかの理由で直前に新しい列dob(生年月日)ageを追加する必要がありますが、BEFORE許可されていないため、代わりに使用dob直後に挿入するだけで、同じ効果が得られます。nameAFTER

+----------------------------+
| name | dob | age | address |
+----------------------------+ 

しかし、`name`の前に新しい列`id`を挿入したい場合はどうでしょうか。

前に列がないため、列を配置するためにname使用することはできません。これを解決するために、言語設計者は、テーブルの最初の列として目的の列を作成することを導入しました。AFTERidFIRSTid

+---------------------------------+
| id | name | dob | age | address |
+---------------------------------+ 

私は個人的に考えAFTERBEFORE、より直感的なペアを作ったでしょうが。

于 2021-04-27T04:28:27.273 に答える