2
私はこのようなテーブルを変更しようとしています:alter tableの複数の変更カラムの構文エラー?
ALTER TABLE book
ADD COLUMN `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `id`,
CHANGE COLUMN `id` bigint unsigned NOT NULL AUTO_INCREMENT,
CHANGE COLUMN `author_id` bigint unsigned NOT NULL;
しかし、それは、この構文エラー与え続けて:私は私が間違ってここに行くよ見当がつかない
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'bigint unsigned NOT NULL AUTO_INCREMENT, CHANGE COLUMN `author_id` bigint un' at line 3
を。 SQLは右の私には非常にすべてのようだと、テーブルの変更のそれぞれが正常に個別に実行することができます。
ALTER TABLE book ADD COLUMN `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `id`;
ALTER TABLE book CHANGE COLUMN `id` bigint unsigned NOT NULL AUTO_INCREMENT;
ALTER TABLE book CHANGE COLUMN `author_id` bigint unsigned NOT NULL;
私は、個々のバージョンを使用することができますが、私は変更する必要がかなり大きなテーブルがあるので、それが良いだろうより速くなければならない複合クエリを使用する場合
なぜSQLは機能しませんか?
"これは標準SQLのMySQL拡張で、ALTER TABLEステートメントごとに各句の1つのみを許可します。たとえば、1つの文で複数の列を削除するには、次のようにします。 " - これは答えのようです。単一のalter tableクエリでは、1つのタイプの列変更だけが可能ですか? –
@ kavoir.com、はい、/alter/drop/alter tableステートメントごとに削除して組み合わせることはできません。構文を正しく確認すると、それが表示されます。 – Rahul
@ kavoir.com – Rahul