Syntaxe podle normy SQL:
p°φkaz_ALTER_TABLE
::= ALTER TABLE [schema.]jmΘno_tabulky [
WB_p°φznak
à ] akce {, akce }à
WB_p°φznak
::= NO_JOURNAL | ZCR | UNIKEY | LUO | TOKEN | DETECT | REC_PRIVILS | DOCFLOW akce ::=
p°idßnφ_sloupce
|
odstran∞nφ
_sloupce |
zm∞na_sloupce
| p
°idßnφ_omezenφ_tabulky
|
odstran∞nφ_omezenφ_tabulky p°idßnφ_sloupce
::= ADD [ COLUMN ] jmΘno_sloupce typ [ [cφl] ][ PREALLOC=n ][ EXPANDABLE ][ COLLATE
uspo°ßdßnφ_°et∞zce
]
odstran∞nφ_sloupce
::= DROP [ COLUMN ] jmΘno_sloupce zm
∞na_sloupce
::= ALTER [ COLUMN ]
jmΘno_sloupce akce_zm∞ny_sloupce akce_zm∞ny_sloupce
::= SET DEFAULT implic_hodnota | DROP DEFAULT implic_hodnota ::= v²raz | USER | UNIQUE p
°idßnφ_omezenφ_tabulky
::= ADD [ CONSTRAINT jmΘno_vlastnosti ] vlastnost_tabulky vlastnost_tabulky ::= { UNIQUE | PRIMARY KEY | INDEX } (v²raz [
sm∞r
] {, v²raz [
sm∞r
] }à ) | CHECK ( podmφnka ) | omezenφ_FOREIGN_KEY
sm∞r
::= ASC | DESC omezenφ_FOREIGN_KEY ::= FOREIGN KEY (jmΘno_sloupce {, jmΘno_sloupce}à ) REFERENCES [schema.]jmΘno_tabulky [ jmΘno_sloupce {, jmΘno_sloupce}à ] [ UPDATE_akce ] [ DELETE_akce ] UPDATE_akce ::= ON UPDATE
akce_referenΦnφ_integrity akce_referenΦnφ_integrity
::= SET NULL | SET DEFAULT | CASCADE | NO ACTION DELETE_akce ::= ON DELETE
akce_referenΦnφ_integrity
ods
tran∞nφ_omezenφ_tabulky
::= DROP CONSTRAINT jmΘno_vlastnosti
Syntaxe podle starÜφch verzφ WinBase602 (pou₧φvß stßvajφcφ nßvrhß° tabulek):
p°φkaz_ALTER_TABLE
::= ALTER TABLE jmΘno_tabulky [
WB_p°φznak
à ] akce {, akce }à akce ::=
p°idßnφ_sloupce
| odstran
∞nφ_sloupce
| popis_omezenφ
p°idßnφ_sloupce
::= ADD [
po°adφ
] jmΘno_sloupce typ [ [cφl] ][ PREALLOC=n ][ EXPANDABLE ][ COLLATE
uspo°ßdßnφ_°et∞zce
][ VALUES "
v²raz_pro_p°enos_hodnoty
" ]
odstran∞nφ_sloupce
::= DROP jmΘno_sloupce popis_omezenφ ::= CONSTRAINT [jmΘno_vlastnosti] vlastnost_tabulky
Popis
P°φkaz ALTER TABLE zm∞nφ definici zadanΘ tabulky. V odlad∞n²ch aplikacφch je nutnΘ takovΘto zm∞ny provßd∞t z rozvahou - potΘ je nezbytnΘ provΘst odpovφdajφcφ zm∞ny ve vÜech objektech (na back-endu i front-endu), kterΘ danou tabulku vyu₧φvajφ.
ALTER TABLE mß od verze 6.0c dv∞ pon∞kud odliÜnΘ podoby. O tom, jakou syntaxi server rozeznßvß, rozhoduje nastavenφ funkcφ Set_sql_option
.
1) Varianta ALTER TABLE odpovφdajφcφ norm∞ SQL je rozÜφ°ena o nastavenφ p°φznak∙ tabulky, kterΘ se t²kajφ specifick²ch vlastnostφ tabulek WinBase602 (popis - viz CREATE TABLE). Oproti norm∞ umo₧≥uje v jedinΘm ALTER TABLE p°φkazu zadat i vφce akcφ odd∞len²ch Φßrkami.
P°i zm∞n∞ sloupce lze pouze zadat nebo ruÜit implicitnφ hodnotu, ostatnφ zm∞ny vlastnostφ sloupc∙ (integritnφ omezenφ, indexy apod.) se provßd∞jφ v rßmci p°idßnφ nebo odstran∞nφ obecn∞jÜφch vlastnostφ tabulky.
2) P∙vodnφ podoba p°φkazu je stßle vyu₧φvanß interaktivnφm nßvrhß°em tabulek. Tato podoba p°φkazu je vhodnß, kdy₧ m∞nφte strukturu napln∞nΘ tabulky, nebo¥ data z ruÜenΘho sloupce lze zachovat definovßnφm v²razu pro p°enos hodnoty do novΘho sloupce. TakΘ lze urΦit po°adφ vklßdanΘho sloupce mezi stßvajφcφmi sloupci (Φφslovßno od 1). V popisu_omezenφ uve∩te vÜechna omezenφ tabulky, kterΘ se majφ po skonΦenφ p°φkazu v tabulce objevit (tj. i ta, kterΘ ji₧ existovala p°ed ALTER TABLE).
POZOR!! P°i pou₧itφ interaktivnφho nßvrhß°e tabulek se automaticky nastavφ p∙vodnφ varianta syntaxe bez ohledu na nastavenφ pomocφ Set_SQL_option!!
P°idßnφ nebo odstran∞nφ indexu provßd∞jφ takΘ p°φkazy CREATE INDEX a DROP INDEX.
OdliÜnosti od normy
P°φklad (SQL varianta):
V tabulce Tab1 je t°eba odstranit sloupec A, p°idat sloupec NewCol, vytvo°it pro n∞j neunikßtnφ index a nastavit referenΦnφ integritu s nad°φzenou tabulkou Tab2, zm∞nit implicitnφ hodnotu ve sloupci D, vytvo°it primßrnφ klφΦ na sloupci B a zßrove≥ zm∞nit integritnφ omezenφ pro tento sloupec.
ALTER TABLE Tab1
DROP COLUMN A,
ADD COLUMN NewCol CHAR(20) COLLATE CSISTRING,
ALTER COLUMN D SET DEFAULT CURRENT_DATE,
ADD PRIMARY KEY (B) ,
ADD CONSTRAINT `Pro ref.integ.` INDEX (NewCol) ,
DROP CONSTRAINT `Check_B`,
ADD CONSTRAINT `Check_B` CHECK (B > 0) ,
ADD CONSTRAINT `Tab1-Tab2` FOREIGN KEY (NewCol) REFERENCES Tab2 (Col) ON UPDATE CASCADE ON DELETE NO ACTION