V tabelo moram dodati več stolpcev, vendar jih moram postaviti za stolpec z imenom lastname
.
Poskusil sem s tem:
ALTER TABLE `users` ADD COLUMN
(
`count` smallint(6) NOT NULL,
`log` varchar(12) NOT NULL,
`status` int(10) unsigned NOT NULL
)
AFTER `lastname`;
Dobim to napako:
Imate napako v sintaksi SQL; preverite priročnik, ki ustreza vaši različici strežnika MySQL, da bi našli pravo sintakso za uporabo blizu ') PO
lastname
' v vrstici 7
Kako lahko uporabim AFTER v takšni poizvedbi?
Poskusite to
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`;
preveri sintakso
Če želite za določenim poljem dodati en sam stolpec, bo delovala naslednja poizvedba MySQL:
ALTER TABLE users
ADD COLUMN count SMALLINT(6) NOT NULL
AFTER lastname
Če želite dodati več stolpcev, morate vsakič za posamezen stolpec uporabiti ukaz 'ADD'. Tukaj je poizvedba MySQL za to:
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
Pri drugi metodi mora biti zadnji ADD COLUMN
stolpec dejansko prvi stolpec, ki ga želite dodati tabeli.
Npr.: če želite dodati stolpce count
, log
, status
v točno določenem vrstnem redu za stolpcem lastname
, bi bila sintaksa dejansko naslednja:
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
Ena od možnosti je, da se ne ukvarjamo s spreminjanjem vrstnega reda stolpcev v tabeli in jo preprosto spremenimo z dodajanjem stolpcev. Nato ustvarite pogled, ki ima stolpce v želenem vrstnem redu - ob predpostavki, da je vrstni red res pomemben. Pogled lahko preprosto spremenite tako, da odraža poljubno zaporedje, ki ga želite. Ker si ne morem predstavljati, da bi bil vrstni red pomemben za programske aplikacije, bi moral pogled zadostovati za tiste ročne poizvedbe, kjer bi bil lahko pomemben.