| Rubrika Php / mysql
Diskusia k článku
Využívanie unikátnych kľúčov v MySQL databáze
Jan Jadud
13. 06. 2009, 23:52
westrem [a] azet.sk
No, neviem presne ako v MySQL musel by som to kuknut a nemam momentalne k dispozicii svoju big bible o MySQL 5 ale minimalne v ORACLE sa daju constrainty nazyvat (a mam silny pocit ze je to nativny SQL standard) a teda mozes kludne vyuzivat to, ze si sparsujes chybovu hlasku a ak v nej nazov daneho constraint, ktory bol violated tak podla toho vypises chybovu hlasku - a nemas starosti s chybovimi cislami apod ;)
cr1m0
01. 03. 2009, 16:08
cr1m0bil [a] gmail.com
O tomto som nevedel, ulahcilo mi to pracu... vhodne pri registracii uctu ;) dakujem
naspäť
Pridať komentár
Využívanie unikátnych kľúčov v MySQL databáze
Využívanie indexov v MySQL je jednou z najbežnejších operácií,
minimálne s indexom PRIMARY sa každý už určite stretol. Slúži na
určenie unikátnosti záznamu – s týmto indexom sa potom spája vlastnosť
auto_increment, ktorá zabezpečí automatické pripočítanie
k indexu pri každom vložení záznamu do tabuľky. Takto vzniká unikátne
číselné ID záznamu, podľa ktorého sa dá záznam vždy bez problémov
identifikovať.
MySQL obsahuje však aj iné druhy indexov, teraz budeme hovoriť o indexe UNIQUE. Ten slúži na identifikáciu stĺpcov, ktoré musia byť v tabuľke jedinečné – teda nemôže sa stať, aby dva záznamy mali rovnaký obsah stĺpca, nad ktorým je vytvorený index UNIQUE. Využívanie tohto indexu je vhodné napríklad v tabuľke, kde máme uložených užívateľov webstránky v štruktúre napríklad:
| meno | heslo | id | |
|---|---|---|---|
| jozef | jozef@jozef.sk | 789jkl789123ôlkj | 1 |
Pri prihlasovaní užívateľa porovnáme zadaný email a heslo s emailom a heslom v databáze. Aby však všetko fungovalo korektne nesmieme dopustiť, aby boli v tabuľke dva (alebo viac) záznamov s rovnakým emailom. Riešení je viacero, napríklad pred odoslaním registrácie užívateľa skontrolovať, či zadaný email už v tabuľke neexistuje. No najčistejším riešením je vytvoriť index UNIQUE nad stĺpcom email.
//mysql kód ALTER TABLE tabulka ADD UNIQUE ('nazov_stlpca')
Pokiaľ by sa snažil užívateľ zaregistrovať s rovnakým mailom, aký
už raz v tabuľke zadaný je, SQL dotaz sa skončí chybou. Číslo tejto
chyby je 1062, čo nám v spolupráci s funkciou
mysql_errno veľmi jednoducho umožňuje vypísať chybovú
hlášku a užívateľovi vysvetliť, že takýto email už v tabuľke
raz je.
if (mysql_errno() == 1062) { echo 'Na zadaný email je už registrované konto.'; }
Problém môže nastať, len ak sa niekedy v budúcnosti zmení číslovanie SQL errorov :).

