Autor | Zpráva | ||
---|---|---|---|
AM_ Profil |
#1 · Zasláno: 1. 11. 2010, 18:51:45 · Upravil/a: AM_
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 * |
#2 · Zasláno: 1. 11. 2010, 21:04:14
A nestačí v tomto případě udělat replace?
REPLACE INTO tabulka |
||
AM_ Profil |
#3 · Zasláno: 2. 11. 2010, 17:17:33
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 * |
#4 · Zasláno: 2. 11. 2010, 23:03:07
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 |
||
Časová prodleva: 13 let
|
0