Adăugarea coloanelor în MySQL după o anumită coloană

Vreau să adaug mai multe coloane într-un tabel, dar toate să fie după (AFTER) coloana lastname.

Am încercat așa:

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

Dar primesc această eroare:

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 ") AFTER lastname" at line 7

Cum pot să folosesc operatorul AFTER în așa o interogare?

Comentarii la întrebare (4)
Soluția

Încearcă așa:

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`;

Și verifică-ți sintaxa

Comentarii (2)

Dacă doriți să adăugați o singură coloană, folosiți următoarea interogarea MySQL:

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

Dacă doriți să adugați mai multe coloane, aveți nevoie de comanda ADD pentru fiecare coloană. Interogarea MySQL:

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

Notă de subsol

În cea de-a doua metodă, ultimul ADD COLUMN coloana ar trebui să fie prima coloană pe care doriți să o adugați la tabel.

Exemplu: dacă doriți să adăugați coloana conte, log, status în această ordine după coloana lastname, sintaxa ar fi cam așa:

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
Comentarii (5)

Nu poți folosi o comandă ADD COLUMN pentru mai multe coloane. Ai nevoie de câte un operator ADD COLUMN pentru fiecare coloană care vrei să o adaugi.

Comentarii (1)

Asta-i varianta corectă:

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`;
Comentarii (0)
ALTER TABLE `users` ADD COLUMN
`COLUMN NAME` DATATYPE(SIZE) AFTER `EXISTING COLUMN NAME`;

Încearcă așa. Acest cod funcționează bine la mine.

Comentarii (0)

O metodă mai bună ar fi să nu-ți bați capul pentru ordinea coloanelor în tabel. Doar adaugă coloane la sfârșitul tabelului. După care creează o afișare în care ordinea coloanelor va fi exact așa cum vrei tu.

Comentarii (1)

Această interogare merge bine la mine:

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';
Comentarii (1)

Soluția care a funcționat bine pentru mine, a fost să adaug o valoare implicită pentru coloană.

ALTER TABLE reservations ADD COLUMN isGuest BIT DEFAULT 0
Comentarii (0)

ALTER TABLE listing ADD count INT(5), ADD log VARCHAR(200), ADD status VARCHAR(20) AFTER stat

Această interogarea ar trebui să funcționeze bine în cazul tău.

Comentarii (0)