MySQL Alter Table Добавить поле до или после поля, уже присутствующего

У меня это есть, но это не работает:

$query = "ALTER TABLE `".$table_prefix."posts_to_bookmark` 
            ADD `ping_status` INT( 1 ) NOT NULL BEFORE `onlywire_status`";

Я ценю это!

Ответ 1

$query = "ALTER TABLE '" . $table_prefix . "posts_to_bookmark' 
          ADD COLUMN 'ping_status' INT(1) NOT NULL 
          AFTER '<TABLE COLUMN BEFORE THIS COLUMN>'";

Я считаю, что вам нужно ADD COLUMN и использовать AFTER, а не BEFORE.

Если вы хотите разместить столбец в начале таблицы, используйте оператор FIRST:

$query = "ALTER TABLE '" . $table_prefix . "posts_to_bookmark'
          ADD COLUMN 'ping_status' INT(1) NOT NULL 
          FIRST";

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

Ответ 2

Чтобы избежать утечки здесь один и тот же код с использованием heredocs, чтобы было проще копировать/вставлять, читать и изменять, надеемся, что это пригодится для некоторых:

Пример "Пример":

$query = <<<EOT
ALTER TABLE `{$table_prefix}posts_to_bookmark` 
ADD COLUMN `ping_status` INT(1) NOT NULL 
AFTER `<TABLE COLUMN BEFORE THIS COLUMN>`;
EOT;

Пример "Первый":

$query = <<<EOT 
ALTER TABLE `{$table_prefix}posts_to_bookmark` 
ADD COLUMN `ping_status` INT(1) NOT NULL 
FIRST
EOT;