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é.
juriad
Profil
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: