Autor Zpráva
AM_
Profil
Zdravím,
mám pocit, že jsem někde viděl syntaxi, jak konstrukci ON DUPLICATE KEY UPDATE zapsat tak, aby se v případě duplicitního klíče aktualizovaly všechny atributy, aniž bych je musel všechny vypisovat.
Tedy např.
INSERT INTO tabulka (a,b,c,d,e,f,g,h) VALUES (...)
ON DUPLICATE KEY UPDATE "ALL" (zde nevím)

místo
INSERT INTO tabulka (a,b,c,d,e,f,g,h) VALUES (...)
ON DUPLICATE KEY UPDATE
a=VALUES(a),
b=VALUES(b),
...

otázka tedy zní, existuje taková syntaxe a jak vypadá? děkuji.
Kajman_
Profil *
A nestačí v tomto případě udělat replace?
REPLACE INTO tabulka
AM_
Profil
Problém je, že REPLACE INTO přemaže hodnoty ostatních sloupců (je to tuším vnitřně implementované jako DELETE a pak INSERT).
Mám třeba tabulku vlastností uživatele (cizí klíč uživatel, dále hodnoty např. poslední návštěva, hodnocení ostatních atd...), a dokud žádná z těchto vlastností není nastavená, řádek nemusí existovat. V momentě, kdy chci některé vlastnosti nastavit, tak je vložím do nového nebo již existujícího řádku daného uživatele, ale bylo by hloupé, kdyby se vložením např. kontaktu smazaly ostatní údaje.
Kajman_
Profil *
Dokumentace se o all v syntaxi nezmiňuje, tak bude asi opravdu potřeba všechny sloupečky vypsat.
http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

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