Mysql kézikönyv, 6

6.5.4 szintaxis ALTER TABLE

Ha az ALTER TABLE utasítás változások meghatározására, hogy milyen típusú oszlopot, de leírnak tbl_name azt jelzi, hogy az oszlop nem változik, akkor lehet, MySQL figyelmen kívül hagyja ezt a módosítást, az egyik oka részben leírt 6.5.3.1 Silent változások oszlopban definíciókat. Például, amikor megpróbálja megváltoztatni egy VARCHAR oszlop CHAR MySQL továbbra is használni fogja VARCHAR. ha a táblázat tartalmazza az egyéb változó hosszúságú oszlopok.

ALTER TABLE utasítás működés közben egy ideiglenes másolatot készít az eredeti tábla. A változás megy végbe a másolatot, majd az eredeti tábla törlésre kerül, és az újat átnevezni. Ez úgy történik, hogy az új tábla automatikusan magában foglalja az összes frissítést, kivéve sikerült. Végrehajtása során ALTER TABLE az eredeti tábla olvasható más ügyfelek. Frissítések és kiírja, hogy a táblázatban megrekedt, amíg az új tábla készen áll.

Meg kell jegyezni, hogy ha bármilyen más lehetőség, hogy az ALTER TABLE eltérő RENAME. MySQL mindig létrehoz egy ideiglenes táblát, még akkor is, ha az adatok szigorúan véve nem kell másolni (például, ha megváltoztatja az oszlop nevét). Azt tervezzük, hogy erősít ez a jövőben, azonban, mivel ALTER TABLE nem hajtunk végre olyan gyakran, mi (MySQL fejlesztők) nem veszi figyelembe ezt a feladatot a prioritás. MyISAM táblákhoz növelheti a sebességet rekonstrukciója index részét (ami a leglassabb része a helyreállítási folyamat a táblázatban) beállításával változtatható myisam_sort_buffer_size elég nagy érték.

Az alábbi példák azt mutatják, néhány esetben használja a ALTER TABLE paranccsal. A példa kezdődik a táblázat t1. amely létrehozta a következő:

Átnevezni az asztalra a T1-T2.

Módosításához az oszlop típusát egész szám tinyint NOT NULL (hagyva a név azonos), és változtatni B oszlop a CHAR (10) CHAR (20) átnevezés azt a b c.

Új időbélyeg oszlopot nevű d.

Kódot megadni az oszlop d, és hogy a oszlop elsődleges kulcs:

Egy oszlop eltávolításához c.

Új AUTO_INCREMENT numerikus oszlop elemzi c.

Megjegyzendő, hogy ez az oszlop indexelt c, mert AUTO_INCREMENT oszlopokat kell indexelni, továbbá c oszlopot nyilvánították NOT NULL. mert indexelt oszlopok nem lehet NULL.

Ha hozzá AUTO_INCREMENT oszlop értékeit ebben az oszlopban a rendszer automatikusan kitölti egymást követő számok (hozzátéve bejegyzés). Az első sorszám lehet beállítani a SET parancs insert_id = # előtt ALTER TABLE vagy használata táblázatos opciók AUTO_INCREMENT = #. Lásd 5.5.6 SET szintaxisparancs.

Ha a AUTO_INCREMENT oszlop MyISAM táblák. nem változtatja meg a sorszámot ugyanaz marad. Ha a csepp egy AUTO_INCREMENT oszlopot, majd egy újabb AUTO_INCREMENT oszlop szám 1-jétől indul újra.

Kapcsolódó cikkek