MySQL – Vložit nebo upravit data?

Odesláno v February 22, 2007 | Kategorie MySQL | Leave a Comment

Prakticky každý, kdo si něco začne s databázovou aplikací, se velmi brzy také setká s úpravou záznamů ve více tabulkách. K tomu taky databáze jsou, že.

Situace se ale začíná trochu komplikovat v případě, kdy nevíme, zda záznam s daným klíčem už existuje.

Příklad: V primární tabulce je uživatel s id=14. V další tabulce chci vytvořit pro tohoto uživatele nový záznam s userid=14, ale pokud už záznam existuje, chci jej jenom upravit.

Donedávna jsem to řešil rutinně dotazem na existenci userid s daným číslem v sekundární tabulce. Pokud neexistuje, uděláme INSERT, pokud existuje, provedem UPDATE.

Od verze MySQL 4.1.0 to lze udělat mnohem elegantněji na jednom řádku pomocí ON DUPLICATE KEY UPDATE.

Nezbytný je druhý unikátní klíč na sloupci `userid`.

Příklad sekundární tabulky:

CREATE TABLE `examp_usersettings` (
`id` int(11) NOT NULL auto_increment,
`userid` int(11) ,
`lang` varchar(10) ,
`title` varchar(80),
PRIMARY KEY (`id`),
UNIQUE KEY `userid` (`userid`)
)

Nyní můžeme použít zmiňovaný příkaz:

INSERT INTO examp_usersettings SET userid=14,lang="cz",title="Nový záznam" ON DUPLICATE KEY UPDATE title="Upravený záznam"

Komentáře

Váš komentář: