Autor | Zpráva | ||
---|---|---|---|
Dusann Profil |
Keďže primary a unique index sú zároveň aj constraints, podľa dokumentácie je možné definovať aj symbol (názov) pre constraint.
Zatiaľ som ale zistil, že v rôznych kontextoch sa objavuje vždy iba meno indexu, nikde nevidím zmysel a využitie CONSTRAINT názvu pre primary alebo unique index. Napríklad: - SHOW INDEX FROM... zobrazuje meno indexu, nie aj constraint názov - INFORMATION_SCHEMA.TABLE_CONSTRAINTS... zobrazuje meno indexu v stĺpci CONSTRAINT_NAME (pre primary a unique index) - Error hláška, napríklad pri pokuse o vloženie duplicity, zobrazí tiež iba meno indexu a nie aj constraint názov Aký zmysel má teda v MySQL definovať CONSTRAINT názov pre primary alebo unique index ? Existuje nejaká situácia kde je možné constraint názov pre primary alebo unique index využiť ? Aha, tak je to jasné: Cez SHOW CREATE TABLE... som zistil že MySQL odstráni časť [CONSTRAINT [symbol]] ak bola pri definícii tabuľky použitá. Takže sa zdá že constraint názov v tomto prípade nemá žiadne využitie a MySQL to ignoruje, aj keď je možné to definovať. Ešte pre upresnenie: - ak pre unique index definujeme constraint názov aj index_name, tak [CONSTRAINT [symbol]] je odstránené a ignorované - ak pre unique index definujeme constraint názov a index_name nedefinujeme, tak [CONSTRAINT [symbol]] je nahradené definíciou pre index_name, kde hodnota index_name je [symbol] z definície pre constraint. - ak pre primary index definujeme constraint názov, tak [CONSTRAINT [symbol]] je odstránené a ignorované. Pre primary index sa meno indexu nedefinuje, je pevne dané. |
||
Časová prodleva: 6 dní
|
|||
juriad Profil |
#2 · Zasláno: 28. 9. 2014, 07:01:40
Ten hlavní důvod může být kompatibilita s jinými databázovými programy. Tím, že tuto klauzuli nezakáží, ale jen ignorují umožní snažší přenositelnost skriptů a její snadné doplnění v budoucnu, až se rozhodnou ji podporovat.
|
||
Časová prodleva: 10 let
|
0