Autor | Zpráva | ||
---|---|---|---|
Novosad1351 Profil * |
#1 · Zasláno: 1. 11. 2021, 17:36:05
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 |
#2 · Zasláno: 1. 11. 2021, 18:12:58
Novosad1351:
„Napadlo ON DUPLICATE KEY UPDATE, ale ten nefunguje jak bych potřeboval.“ A v čem je ten problém? |
||
Novosad1351 Profil * |
#3 · Zasláno: 1. 11. 2021, 18:22:03
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 |
#4 · Zasláno: 1. 11. 2021, 18:27:58
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 * |
#5 · Zasláno: 1. 11. 2021, 18:37:35
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 |
#6 · Zasláno: 1. 11. 2021, 18:49:28
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`) 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 |
||
Časová prodleva: 2 roky
|
0