Lze vypsat neexistující id? – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Lze vypsat neexistující id? – MySQL – Fórum – Programujte.comLze vypsat neexistující id? – MySQL – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
VelkyBubak0
Newbie
16. 12. 2015   #1
-
0
-

Dejme tomu že mám tabulku s auto increment číselným klíčem. Pokud nějaký řádek vymažu, není již dané id k dispozici. Existuje v mysql nějaká možnost jak vypsat tato již neexistující id?

Mimo případné MySQL řešení, mne napadají jen dvě jiná s použitím php:

1) pomocí cyklu bych pro každé id {for ($i=1; $i<=30000;$i++)} dal dotaz na db a pokud mysql_num_rows($dotaz) bude 0 tak ho vypsal

2) převedu všechna existující id z db do pole a pak porovnám pole s cyklem {for ($i=1; $i<=30000;$i++)}

Nahlásit jako SPAM
IP: 94.113.99.–
VelkyBubak0
Newbie
16. 12. 2015   #2
-
0
-

#1 VelkyBubak
Ještě mě napadla jedna možnost s mysql, která je ve svém základním tvaru vypíše ale k mému překvapení jen poslední z nich - očekával jsem že to bude fungovat pro:

(a.id+1) as ids /* první */

(pokud je jich za sebou odebraných více nezobrazí se a zviditelnění ostatních neexistujících id by bylo tímto způsobem velice obtížné)

SELECT (a.id-1) as ids FROM tabulka as a left join tabulka as b on a.id=(b.id+1) where b.id is null
Nahlásit jako SPAM
IP: 94.113.99.–
Kit+15
Guru
16. 12. 2015   #3
-
0
-

#2 VelkyBubak
Vypsat neexistujísí ID samozřejmě jde. Můžeš si udělat trigger, který ti vymazaná ID bude ukládat do další tabulky, ve které je budeš mít jako na dlani.

Ve své podstatě není žádný důvod to dělat, protože smazaná ID by nás už neměla nijak zajímat a jejich použití dokáže značně zesložitit aplikaci a vytvořit nebezpečné kombinace.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
z_moravec
~ Redaktor
+3
Posthunter
16. 12. 2015   #4
-
0
-

#1 VelkyBubak
Další možnost je nemazat řádek, ale přidat k němu příznak (další sloupec tabulky) smazáno. Pak snadno zjistíš, které položky byly smazané.

Nahlásit jako SPAM
IP: 147.251.236.–
Spát lze čtyři hodiny denně, spát déle je nemístný přepych.
Thomas Alva Edison
VelkyBubak0
Newbie
16. 12. 2015   #5
-
0
-

#3 Kit
#4 z_moravec

Ook, tohle mi bylo jasné šlo mi o to, jak to udělat ve chvíli, kdy už jsou smazané.

Respektive původní myšlenka která mne sem dovedla byla, jak prohodit obrázky, které jsou pojmenovány po těchto id.

1. Musím najít nějaký odkladový prostor, kde nic není (tedy jeden z těch neexistujících id, protože nechci zasahovat do auto increment a zbytečně přidělávat nová prázdná místa), 2. přesunu tam první z obrázků (přepíšu id na ono volné a v závislosti na tom, přesunu data obrázku na odpovídající místo) 3. na takto uvolněné místo a s tím i id přesunu druhý obrázek 4. přesunu první obrázek na místo druhého - a mám stejná neexistující id jako na počátku

Nahlásit jako SPAM
IP: 94.113.99.–
Kit+15
Guru
16. 12. 2015   #6
-
0
-

#5 VelkyBubak
Proč tam chceš přesouvat obrázky? Prostě to ID nechej prázdné.

Snažíš se udělat poměrně nebezpečnou věc, tak si to zavčas rozmysli.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
VelkyBubak0
Newbie
16. 12. 2015   #7
-
0
-

#6 Kit

Ok.
Přesouvání obrázků bylo důvodem, proč jsem chtěl využít na krátkou chvilku již odstraněné id (jediná souvislost s tématem spočívá v tom že záznam o obrázku je řádkem v tabulce. Aktuálně se snažím vyřešit situaci, kdy potřebuji prohodit id dvou řádků, nicméně je tu vlastně ještě varianta s prohozením všech ostatních hodnot krom id pomocí php, což mi z nějakého důvodu uniklo. Zdá se že málokdy přijdu na nejsnažší řešení.

Nahlásit jako SPAM
IP: 94.113.99.–
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, 4 hosté

 

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