Autor | Zpráva | ||
---|---|---|---|
jtousek Profil * |
Zdravím,
mám následující problém s MySQL. Mým cílem je tabulka článků, kde bude každý řádek mít více verzí - podle toho dy onen článek kdo změnil, aby změnu mohl schválit admin a aby byl možný návrat či porovnání se starší verzí. Tzn. sloupec, ve kterém bude ID článku nebude mít unikátní hodnoty. Takže si udělám sloupce 2: CREATE TABLE IF NOT EXISTS `clanky` ( `key` int(11) unsigned NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL, PRIMARY KEY (`key`), INDEX (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Nicméně když přidávám nový článek, potřeboval bych sloupci id hodnotu vygenerovat. Auto_increment nelze bohužel použít na více než jednom sloupci a nerad bych používal nějaké berličky, které by mohli selhat v případě kdy k databázi přistupuje více uživatelů v jeden okamžik. Děkuji za nápady. |
||
Shadowek Profil |
#2 · Zasláno: 30. 8. 2009, 13:52:38
No pokud to vkládáš přes PHP tak mužeš vytahnout poslední hodnotu , příčíst 1 a uložit do DB...
Ale pokud budeš pokládat jen tak SQL dotazy tak nevím ... |
||
Jan Tvrdík Profil |
#3 · Zasláno: 30. 8. 2009, 13:54:40 · Upravil/a: Jan Tvrdík
jtousek:
Paklliže nechceš, aby ti to selhalo při více uživatelích, pak bys mohl zkusit transakce. |
||
tiso Profil |
#4 · Zasláno: 30. 8. 2009, 14:07:59
jtousek: správne riešenie je použíť 2 tabuľky:
clanky(id, ...) verzie(id, clanek_id, ...) |
||
jtousek Profil * |
#5 · Zasláno: 30. 8. 2009, 14:35:12
tiso:
Bingo, dík moc. Že mě to sakra nenapadlo... Mi to řešení od začátku přišlo trochu divný. |
||
Časová prodleva: 15 let
|
0