Ik moet meerdere kolommen aan een tabel toevoegen maar de kolommen na een kolom genaamd achternaam
plaatsen.
Ik heb het volgende geprobeerd:
ALTER TABLE `users` ADD COLUMN
(
`count` smallint(6) NOT NULL,
`log` varchar(12) NOT NULL,
`status` int(10) unsigned NOT NULL
)
AFTER `lastname`;
Ik krijg deze foutmelding:
U heeft een fout in uw SQL syntax; kijk in de handleiding die overeenkomt met uw MySQL server versie voor de juiste syntax te gebruiken in de buurt van ') AFTER
lastname
' op regel 7
Hoe kan ik AFTER gebruiken in een query als deze?
Als u een enkele kolom wilt toevoegen na een specifiek veld, dan zou de volgende MySQL query moeten werken:
ALTER TABLE users
ADD COLUMN count SMALLINT(6) NOT NULL
AFTER lastname
Als u meerdere kolommen wilt toevoegen, dan moet u het commando 'ADD' elke keer voor een kolom gebruiken. Hier is de MySQL query voor dit:
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
In de tweede methode moet de laatste ADD COLUMN
kolom eigenlijk de eerste kolom zijn die je aan de tabel wilt toevoegen.
Bijvoorbeeld: als je count
, log
, status
wilt toevoegen in de exacte volgorde na lastname
, dan zou de syntax eigenlijk zijn:
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
Een mogelijkheid zou zijn om zich niet te bekommeren om het herschikken van de kolommen in de tabel en ze eenvoudigweg aan te passen door de kolommen toe te voegen. Maak dan een view die de kolommen heeft in de volgorde die U wenst -- ervan uitgaande dat de volgorde echt belangrijk is. De view kan gemakkelijk worden veranderd om elke volgorde weer te geven die u wilt. Aangezien ik me niet kan voorstellen dat de volgorde belangrijk zou zijn voor programmatische toepassingen, zou de view moeten volstaan voor die manuele queries waar het belangrijk zou kunnen zijn.