Autor Zpráva
Novosad1351
Profil *
Ahoj,

dá se použít insert i update v jednom mySQL dotazu? Mám dva zdroje ze kterých vkládám do mySQL data, tak že pokaždé se ptám mySQL jestli již data existují a pokud ano, provedu update jen některých částí.
Nechci tedy zbytečně dělat dva dotazy na mySQL. Nedá se to udělat jedním dotazem? Napadlo ON DUPLICATE KEY UPDATE, ale ten nefunguje jak bych potřeboval.
Kajman
Profil
Novosad1351:
Napadlo ON DUPLICATE KEY UPDATE, ale ten nefunguje jak bych potřeboval.

A v čem je ten problém?
Novosad1351
Profil *
time má unique v mysql. V podstatě 2x stejný time se nevloží. Toto funguje OK. Mně jde spíše o to, že pokud time už existuje, potřebuji provést update a to v tomto případě nefunguje, protože je to insert. Existuje insert a update v jednom?

INSERT INTO data (jmeno, time) VALUES (1, 1) ON DUPLICATE KEY UPDATE time = 1
Kajman
Profil
Tak pokud řádek s time = 1 již existuje, tak je nesmyl updatovat sloupec time na 1, nechcete v update části spíše updatovat sloupec jmeno?
Novosad1351
Profil *
jmeno = 1 a time = 1 mám v mySQL. Chci tedy provést update. Změním jmeno=2 a "Příkaz proběhl v pořádku, bylo změněno 0 záznamů."
INSERT INTO data (jmeno) VALUES (2) ON DUPLICATE KEY UPDATE time = 1
Kajman
Profil
Pokud máte v db jmeno = 1 a time = 1 a chcete vložit 2,1 a pokud už tam je time=1, tak upravit u toho řádku sloupec jmeno na 2, tak má být dotaz
INSERT INTO `data` (`jmeno`,`time`) VALUES (2,1) ON DUPLICATE KEY UPDATE `jmeno` = VALUES(`jmeno`)
počet ovlivněných řádků při použití této syntaxe vrací navíc informaci, co se dělo
1 - udělal se nový řádek
0 - udělal se update, ale všechny sloupce zůstaly stejné
2 - udělal se update a alespoň jeden sloupec se změnil

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