Povinný unikátní klíč – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Povinný unikátní klíč – MySQL – Fórum – Programujte.comPovinný unikátní klíč – MySQL – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Forest0
Stálý člen
5. 11. 2013   #1
-
0
-

Ahoj, mám dotaz. Od kdy je povinné mít v tabulce unikátní klíč a proč? Díky ;)

Nahlásit jako SPAM
IP: 92.62.230.–
peter
~ Anonymní uživatel
4016 příspěvků
5. 11. 2013   #2
-
0
-

Neni to povinne, co ja vim. Odkud mas takovou informaci?

Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
Paja2
~ Moderátor
+2
Věrný člen
5. 11. 2013   #3
-
0
-

#1 Forest
povinné to není, ale většinou se využívá tzv. ID s vlastností auto_increment a to proto aby bylo možné jednoznačně identifikovat záznam, který chci např. upravit nebo smazat.

Nahlásit jako SPAM
IP: 31.134.216.–
Forest0
Stálý člen
5. 11. 2013   #4
-
0
-
Nahlásit jako SPAM
IP: 92.62.230.–
KIIV
~ Moderátor
+43
God of flame
5. 11. 2013   #5
-
0
-

ale ono ti to nerika ze musis mit primarni klic... musis mit unikatni klic - aby to dokazalo smazat nejakou polozku aniz by to smazalo neco dalsiho "nahodou"

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Forest0
Stálý člen
5. 11. 2013   #6
-
0
-

#5 KIIV
No vzdyt jo, ja tady mluvim o unikatnim a ne o primarnim :-)

Nahlásit jako SPAM
IP: 92.62.230.–
KIIV
~ Moderátor
+43
God of flame
5. 11. 2013   #7
-
0
-

pravda.. jde proste o to ze mysql to tam mit nemusi.. za to phpMySql ocividne ano - ale beztak neni spatny mit klic nad sloupcem, podle ktereho vyhledavas - je to minimalne rychlejsi, kdyz tam je vetsi tabulka

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Forest0
Stálý člen
5. 11. 2013   #8
-
0
-

#7 KIIV
A jak tam ten unikát mám přidat? Nikdy jsem to nemusel použít, takže vůbec nevím. Zkoušel jsem to přidat, ale hlásí mi to chybu ...

Nahlásit jako SPAM
IP: 92.62.230.–
Řešení
KIIV
~ Moderátor
+43
God of flame
5. 11. 2013   #9
-
0
-
Vyřešeno Nejlepší odpověď

nejspis tam mas uz duplikatni uzivatelsky jmena - minimalne databaze musi rict, co se ji nelibi

jinak by melo fungovat neco jako   CREATE UNIQUE INDEX ma_uname_idx ON main_account (mbusername);

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Forest0
Stálý člen
5. 11. 2013   #10
-
0
-

#9 KIIV 

SQL-dotaz:

ALTER TABLE  `main_balance` ADD  `ac_uk` INT( 6 ) NOT NULL FIRST ,
ADD UNIQUE (

`ac_uk`
);

MySQL hlásí:

#1062 - Duplicate entry '0' for key 'ac_uk' 
Nahlásit jako SPAM
IP: 92.62.230.–
KIIV
~ Moderátor
+43
God of flame
5. 11. 2013   #11
-
0
-

jo ty se snazis pridat novej sloupec jako index.. minimalne mu dej auto_increment... jinak to budes muset udelat postupne

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Forest0
Stálý člen
5. 11. 2013   #12
-
0
-

#11 KIIV
A to já právě nechci. Proč bych tomu měl dávat AUTOINCREMENT? V té tabulce je to totálně zbytečný. AUTOINCREMENT mám jen v tabulce s uživatelskými jmény, protože potřebuju jejich ID.

Nahlásit jako SPAM
IP: 92.62.230.–
Forest0
Stálý člen
5. 11. 2013   #13
-
0
-

A to mě ještě děsí představa, že budu muset upravit všechny INSERT INTO příkazy, protože tam, kde nemám ID (což je ve všech tabulkách kromě jedné), používám:

INSERT INTO tabulka VALUES('hodnota1', 'hodnota2', ...);

Místo:

INSERT INTO tabulka (sloupec1, sloupec2, ...) VALUES('hodnota1', 'hodnota2', ...);

Jakmile bych tam přidal klíč, tak musím použít ten druhý způsob, jelikož to začne zapisovat od začátku ...

Nahlásit jako SPAM
IP: 92.62.230.–
KIIV
~ Moderátor
+43
God of flame
5. 11. 2013   #14
-
0
-

no na to se da argumentovat jen "neudrzitelny kod" - dobry tak mozna pro placani na koleni neceho, co pak doufejme zase brzo upadne v zapomeni :)

furt muzes jeste ten unikatni klic nahodit na mbusername, jak sem psal par prispevku nazpet... tim tam mas unikatni klic, nestane se, ze budes mit nekolik uzivatelu se stejnym jmenem a muzes vesele mazat v phpMyAdminu

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
peter
~ Anonymní uživatel
4016 příspěvků
6. 11. 2013   #15
-
0
-

Proc bys musel upravovat vsechny INSERTy? autoincrement sloupec se sam zvysuje pridanim noveho radku, jeho hodnotu nemusis do dotazu uvadet. A jak uz bylo receno, mazani zaznamu podle id (rekneme 3 znaky po 255) je rychlejsi nez vyhlevadani retezce (32 znaku po 255).

A ta hlaska mimochodem znamena, ze funkce Edit, Delete, zaskrtavaci policka phpmyadmina nelze pouzit, protoze je nemuze propojit s unikatnim zaznamem. Navic je to oznacene jako varovani, vykricnik ve zlutem trojuhelnicku ne cervenem. Priklad:
name, psw
Alois, Alois - radek1
Alois, Alois - radek2
SELECT * FROM tabulka WHERE name='Alois' AND psw='Alois'
To vrati 2 radky, takze, kdyby tam dal zaskrtavatko a ty jsi chtel smazat jen jeden radek, tak by to neslo, protoze cisla radku se nikde neukladaji. Predpokladam, ze ani slozity dotaz s AND to v sobe nema zabudovane, protoze to nechce riskovat.
Takovyto druh tabulky pouzivam treba pro banovani, kde mam sloupce: id_uzivatel, ip, poznamka. Vetsinou ale nastavuji id_uzivatele jako unikatni.
 

Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
Forest0
Stálý člen
6. 11. 2013   #16
-
0
-

#15 peter
Proč bych musel upravovat INSERTy? No protože když mi KIV napsal, ať tam přidám AUTOINCREMENT, tak by to vypadalo takto:

Budu mít třeba dva sloupce nick, heslo a provedu příkaz

INSERT INTO tabulka VALUES('peter', 'superheslo');

To je ok. Ve chvíli, kdy ale přidám na začátek id s AUTOINCREMENT a budu mít tedy sloupce id, nick, heslo a zadám stejný příkaz

INSERT INTO tabulka VALUES('peter', 'superheslo');

Tak se mi přece hodnota nicku narve do sloupce id ...

Nahlásit jako SPAM
IP: 92.62.230.–
peter
~ Anonymní uživatel
4016 příspěvků
6. 11. 2013   #17
-
0
-

Aha, to jo. Ty mas ty dotazy napsane opacne, ale doporucuje se prave pouzivat ten druhej tvar :)

Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Klíč na MylSAM a InnoDB — založil Davidkopecky

Unikatni hodnota — založil Earl Cash

Navrh DB ve 3NF - slozeny klic — založil HellMaster

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý