Add to Google Reader or Homepage Prihlásiť sa k odberu RSS

| Rubrika Php / mysql

Diskusia k článku

Využívanie unikátnych kľúčov v MySQL databázeZobraziť článok

Jan Jadud
Dátum a čas 13. 06. 2009, 23:52 E-mail 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
Dátum a čas 01. 03. 2009, 16:08 E-mail cr1m0bil [a] gmail.com

O tomto som nevedel, ulahcilo mi to pracu... vhodne pri registracii uctu ;) dakujem

Naspäť naspäť

Pridať komentár

Koľko je na ruke prstov?

Náhľad článku

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 email 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 :).

RSS