Amikor kitörlök egy rekordot az adatbázisból akkor az AI (autoincr. ) ezt figyelmen kívül hagyja, hogyan tehetném meg, hogy ne tegye?
Tehát mondjuk van 3 rekord a táblában, kitörlöm a 3mas rekordot. Akkor bent lesz az 1 és a 2. Hogyha újat hozok létre, akkor annak már 4 lesz az ID-je, és az úgy néz ki, hogy 1, 2, 4. Azt szeretném megoldani, hogy amikor törlök egy rekordot, akkor az ID ugyan onnan kezdje a számlálást, tehát ha kitörlök egy sort, és újat csinálok, akkor annak is 3-mas legyen az id-je.
Hülyén magyaráztam, remélem azért érthető. Forgive me pls.
(PHP-ról van szó)
Ne legyél már retard vérpistike.
Olvass utána mi az az id, mire-hogy használjuk, mi az az adatbázis, alapelvek és végre nem fogsz ekkora blődségeket ideokádni.
Nem véletlenül nem támogat ilyesmit az adatbázis, mert iszonyú sok problémához vezethet.
Írnék rá példákat, de túl kretén vagy ahhoz, hogy kedvem legyen hozzá.
De picit azért segítek: mondd neked valamit az a szó, hogy RELÁCIÓS adatbázis?
Te annyira szerencsétlen, provokatív és analfabéta vagy, hogy azt már jó nézni.
Estleg az arcodba tegyek egy konkrét példát, vagy tovább vered magad és szidsz úgy, hogy azt se tudod miről pofázol? Vedd be a gyógyszered, hisztis b. romarc.
Ja, remélem ez segít:
A relációs adatbázis, 1. Két szó, 2. Semmi köze ahhoz amiről én beszélek, de valahogy túl r..ardált vagy ahhoz, hogy ezt felfogd(persze csak nincs kedved normálisnak lenni).
Ennek a gyökérnek annyiban igaza van, hogy nem túl szerencsés.
Pl. van egy felhasználók táblád. Ha kitörölsz belőle, akkor nyilván a többi táblában is kitörlöd az ehhez a felhasználóhoz tartozó adatokat. De tegyük fel, hogy valamit nem akarsz kitörölni az általa létrehozott adatok közül.
Pl. itt van ez a phasz, aki végre valahára törölteti magát erről az oldalról, de nem szeretnénk hogy a csodálatos üzenetei is törlődjenek (tudom, ezt nehéz elképzelni), és később valaki mást regisztrálsz az ő azonosítójához, akkor szegény frissen regisztrált felhasználónak ott fog égni a feje, hogy "te jó ég, mikor voltam ennyire nyomi"?
Mondjuk ezt azzal is ki lehet küszöbölni, hogy a válasz sorából kitörlöd a felhasználó mezőt. :)
Technikailag meg lehet csinálni, csak nem auto-incrementtel, hanem manuálisan.
Adatbázis tervezés szempontjából viszont nagyon-nagyon rossz ötlet, több okból is:
1. Az ID egyedileg azonosít egy rekordot. Ha törlöd, akkor is valamikor ott volt. Egy nagy adatbázis esetén szokott lenni data history egy külön adatbázisban, na ott gondot okozna az újrahasznosított ID
2. Egy esetleges külső hivatkozás is gondot jelenthez. Pl. van egy profil a weboldalon, ha az kicserélődik, akkor a link egy teljesen más profilra fog mutatni.
3. Az, hogy "lyukak" vannak az ID-ben nem jelent gondot. Egyrészt csak az egyediség a lényeg, másrészt az adatbázismotor a törölt rekordok felszabadítását is meg tudja oldani
Sokkal jobb megoldás a soft delete, vagyis, hogy nem törlöd ténylegesen a rekordot, csak beállítasz egy flage-et, hogy "deleted" vagy kitöltesz egy "deleted_at" mezőt egy dátummal.
Előző vagyok, bocs nem #10-es hanem #14-es hozzászólásra utaltam. De mondok más példát. Tegyük fel, hogy a _relációs_ adatbázisban tényleg törölsz minden relációt, minden rá utaló kapcsolódó rekordot. Akkor is gondot okozhat, ha pl. a google beindexel egy olyan oldalt, aminek az url-ében szerepel a törölt, aztán később másra felhasznált ID. Kész káosz.
Szóval tényleg érdekelne, hogy MIÉRT akarsz ilyet?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!