Autor | Zpráva | ||
---|---|---|---|
peter_r Profil |
#1 · Zasláno: 26. 4. 2022, 11:30:03
Asi je to primitívna záležitosť, ale nemôžem ohľadom toho nič nájsť.
Mám v db prvý stĺpec id, ktorý má nastavené auto_increment a je primárny, čiže automaticky čísluje položky. Ale samozrejme keď vymažem napr. posledný riadok, ďalšie číslo pridá ďalšie v poradí, nepridá to čo som posledné vymazal. Je to nejako možné nastaviť? Rozumiem a nechcem doplňovať riadky niekde medzi, že narp. mám 50 riadkov a vymažem nejaký 35-ty a ten chcem doplniť. Dúfam že som to napísal zrozumiteľne a ďakujem za každú radu. |
||
Firibix Profil |
#2 · Zasláno: 26. 4. 2022, 11:50:33
Reakce na petera_r:
Viz Recyklování primárních klíčů smazaných záznamů a Číslování řádků přímo v mysql ve zdejším FAQ. |
||
peter_r Profil |
#3 · Zasláno: 26. 4. 2022, 12:06:07
Firibix:
ďakujem, o tomto som nevedel, ale ... skúsil som hneď prvú možnosť a nestalo sa nič: set @radek=0 set @radek=0 a neviem, či @radek mám dať názov stĺpca? skúšal som hocičo a číslovanie sa nezmenilo |
||
Andrej.B Profil |
#4 · Zasláno: 26. 4. 2022, 12:18:44
peter_r:
nevymazavajte riadky, len vytvorte stlpec napriklad s nazvom "aktivny" , ktory bude false or true a podla toho vyber cez podmienku WHERE len tie co su aktivne nastavene na TRUE |
||
Firibix Profil |
Reakce na petera_r:
„@radek mám dať názov stĺpca“ MySQL podporuje proměnné, proměnná se uvozuje zavináčem. @radek tedy značí proměnnou s názvem radek .
„skúsil som hneď prvú možnosť a nestalo sa nič“ Samotné SET @radek=0 jen nastaví proměnnou radek na nulu, nic jiného nedělá. Je potřeba jí pak použít ve tvém dotazu, podle příkladu ve FAQ:
SELECT @radek:=@radek+1 cislo_radku, tabulka.* FROM tabulka SELECT @radek:=@radek+1 cislo_radku, tabulka.* FROM tabulka Dotaz výše vybere všechny řádky z tabulky tabulka (část FROM tabulka ), všechny sloupce z tabulky tabulka (část tabulka.* ) a sloupec, ve kterém bude hodnota proměnné radek (část SELECT @radek ), s tím, že na každém řádku se proměnná radek zvýší o jedna (část @radek:=@radek+1 ).
Reakce na Andreje.B: „nevymazavajte riadky“ Ne vždy je to možné. Například osobní data se smí uchovávat jen přiměřeně dlouhou dobu, což tlačítko Smazat, které data jen skryje a v databázi je nechá na věky věků, nesplňuje. Reakce na petera_r: Respektive spíš se zeptám: K čemu to potřebuješ? Pokud chceš mít jen řádky očíslované na výpise do stránky, pravděpodobně bude jednodušší to udělat v PHP nebo jiném programovacím jazyku, který používáš. |
||
peter_r Profil |
#6 · Zasláno: 26. 4. 2022, 12:43:00
Andrej.b: ... rozumiem
Firibix: možno je to blbosť ale, pripravujem si jednu databázu, kde samozrejme testujem a pridávam riadky, ktoré chcem pred ostrým spustením vymazať a začať naostro od nuly Asi sa to dá tak že vytvorím novú databázu s novým názvom ale potom musím všade kde som použil názov databázy urobiť zmenu názvu |
||
Kcko Profil |
#7 · Zasláno: 26. 4. 2022, 12:44:21
Řešíš kardinální blbost. ID řádku má odkazovat na řádek a když ho smažeš už po něm tu mezeru zapľnovat nemáš.
|
||
Firibix Profil |
#8 · Zasláno: 26. 4. 2022, 12:47:38
Reakce na petera_r:
Jméno databáze má být uvedené v celé aplikaci na jednom místě, v nějakém konfiguračním souboru. Jinak je to špatně. Pokud ti jde jen o jednorázové promazání tabulky a reset indexu, můžeš použít (smaže z tabulky všechny řádky!): TRUNCATE TABLE tabulka; TRUNCATE TABLE tabulka;
ALTER TABLE tabulka AUTO_INCREMENT = 1; |
||
Andrej.B Profil |
#9 · Zasláno: 26. 4. 2022, 13:30:43
Firibix:
> Reakce na Andreje.B: > „nevymazavajte riadky“ > Ne vždy je to možné. Například osobní data se smí uchovávat jen přiměřeně dlouhou dobu, což tlačítko Smazat, které data jen skryje a v databázi je nechá na věky věků, nesplňuje. Tak toto ma nenapadlo, potom staci pridat este stlpec s datumom a nejakym scriptom na pozadi /kazdy den zmaz data kde datum je < 365 dni napr./ vymazavat data v riadkoch, kde su osobne data, nie cele riadky. |
||
N71 Profil * |
#10 · Zasláno: 26. 4. 2022, 14:06:02
Firibix:
„ ALTER TABLE tabulka AUTO_INCREMENT = 1; “
Tento řádek je nadbytečný. V MySQL TRUNCATE resetuje sekvenci standardně. |
||
Časová prodleva: 3 roky
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0