Autor Zpráva
spartan13
Profil
Dobrý den, potřebuji když ručně vymažu záznam, aby vkládání řádků probíhalo "normálně" a nevynechávalo žádné id. Jediné, kdy to funguje je když se smaže celá tabulka (truncate)

Nemusí to být v programu tento příkaz potřebuji vykonat jednou za dlouhou dobu.
Joker
Profil
spartan13:
aby vkládání řádků probíhalo "normálně" a nevynechávalo žádné id
Čili chcete, aby případné záznamy na jiných místech odkazující na položku kterou smažete se přesměrovaly na položku, kterou tam příště vložíte?
(jelikož nevím co řešíte, dám příklad třeba s diskusí, kdy smažete uživatele a ten, kdo se následně jako první zaregistruje, se stane novým autorem všech příspěvků toho smazaného)

Obecně "recyklování IDček" opravdu není dobrý nápad, ale jestli toho z nějakého zvláštního důvodu opravdu chcete dosáhnout, špatná zpráva je, že to nebude jednoduché.
spartan13
Profil
Joker:
u mě naštěstí žádný autor ani případné další problémy nebuodu, jen to označuje určitý objekt, který když se vymaže tak tam jednoduše nebude. Ale jestli je to opravdu tak složité tak to nechám tak jak to je s tím, že tam třeba některá ID nebudou, což samo o sobě na funkčnost programu nebude mít vliv.
Joker
Profil
spartan13:
jen to označuje určitý objekt
Jasně, od toho ID (= identifikátor) je. A právě proto není rozumné to ID "recyklovat" pro jiný objekt, protože potom už nebude unikátní.

když se vymaže tak tam jednoduše nebude
Určitě? Ani se nemůže stát, že někde bude odkaz třeba zobraz.php?id=xy, který v budoucnu místo původního záznamu, nebo alespoň hlášky ve smyslu "záznam nebyl nalezen" zobrazí nějaký úplně jiný záznam?

tam třeba některá ID nebudou, což samo o sobě na funkčnost programu nebude mít vliv
Ano, to taky myslím, že požadavek na spojitou řadu IDček je zbytečný. Nedostatek IDček snad taky nehrozí, potenciálně jich můžete mít více než 18 trilionů.

Jinak asi nejjednodušší řešení které mě napadá by bylo:
1. Místo fyzického vymazání záznamu z databáze by nastavoval příznak, že položka je vymazaná. Takhle se to ostatně běžně dělá
2. Vložení nového záznamu by zkusilo najít první položku s příznakem "vymazáno" a tu přepsat a jen pokud by žádná nebyla, založil by se nový záznam. Tohle je ovšem dost bizarní přístup.

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:

0