Aggiungere più colonne DOPO una colonna specifica in MySQL

Ho bisogno di aggiungere più colonne a una tabella ma posizionare le colonne dopo una colonna chiamata lastname.

Ho provato questo:

ALTER TABLE `users` ADD COLUMN
(
    `count` smallint(6) NOT NULL,
    `log` varchar(12) NOT NULL,
    `status` int(10) unsigned NOT NULL
) 
AFTER `lastname`;

Ottengo questo errore:

Hai un errore nella tua sintassi SQL; controlla il manuale che

corrisponde alla tua versione di server MySQL per la giusta sintassi da usare vicino a ') AFTER lastname' alla linea 7

br> Come posso usare AFTER in una query come questa?

Soluzione

Prova questo

ALTER TABLE users
ADD COLUMN `count` SMALLINT(6) NOT NULL AFTER `lastname`,
ADD COLUMN `log` VARCHAR(12) NOT NULL AFTER `count`,
ADD COLUMN `status` INT(10) UNSIGNED NOT NULL AFTER `log`;

controlla la sintassi

Commentari (2)

Se vuoi aggiungere una singola colonna dopo un campo specifico, allora la seguente query MySQL dovrebbe funzionare:

ALTER TABLE users
    ADD COLUMN count SMALLINT(6) NOT NULL
    AFTER lastname

Se vuoi aggiungere più colonne, allora devi usare 'ADD' comando ogni volta per una colonna. Ecco la query MySQL per questo:

ALTER TABLE users
    ADD COLUMN count SMALLINT(6) NOT NULL,
    ADD COLUMN log VARCHAR(12) NOT NULL,
    ADD COLUMN status INT(10) UNSIGNED NOT NULL
    AFTER lastname

Punto da notare

Nel secondo metodo, l'ultima ADD COLUMN colonna dovrebbe essere effettivamente la prima colonna che si vuole aggiungere alla tabella.

Es: se vuoi aggiungere count, log, status nell'ordine esatto dopo lastname, allora la sintassi sarebbe effettivamente:

ALTER TABLE users
    ADD COLUMN log VARCHAR(12) NOT NULL AFTER lastname,
    ADD COLUMN status INT(10) UNSIGNED NOT NULL AFTER lastname,
    ADD COLUMN count SMALLINT(6) NOT NULL AFTER lastname
Commentari (5)

Una possibilità sarebbe quella di non preoccuparsi di riordinare le colonne nella tabella e semplicemente modificarla aggiungendo le colonne. Poi, creare una vista che abbia le colonne nell'ordine che si desidera - assumendo che l'ordine sia veramente importante. La vista può essere facilmente modificata per riflettere qualsiasi ordine che si desidera. Poiché non posso immaginare che l'ordine sia importante per applicazioni programmatiche, la vista dovrebbe essere sufficiente per quelle query manuali in cui potrebbe essere importante.

Commentari (1)