Autor Zpráva
Greeg
Profil
mohol by mi niekto prosim nalinkovat nejaky zrozumitelny manual ako pouzivat IF a ELSE prikazy v mysql? riesim problem, ked potrebujem v db aktualizovat konkretny riadok, resp ho vytvorit ak neexistuje. skusal som to cez mysql_affected_rows no v pripade ze sa obsah riadku nezmeni (resp updatuju sa rovnake udaje ako su uz v danom riadku) vracia to nulu a tym padom neviem povedat ci uz riadok existuje alebo nie a ci ho zteda mam nanovo vytvorit.

vdaka, sry ak sa to uz riesilo ale search nepomohol "/
Tomasds
Profil
myslím že jedním příkazem to neuděláš.

Takže postup je ten, že nejdřív použiješ select id where podmínka. Když ti to vrátí row_count > 0 tak update, když ne, tak insert.
Greeg
Profil
thx vykusam
Alphard
Profil
v určitých případech (když má tabulka index) se dá použít replace http://www.linuxsoft.cz/article.php?id_article=816
a někdy toto http://www.mysqlperformanceblog.com/2006/05/29/insert-on-duplicate-key -update-and-summary-counters/
něco o podmínkách (ale nevím, jestli dost) je tady http://www.linuxsoft.cz/article.php?id_article=933 a tady http://dev.mysql.com/doc/refman/5.0/en/if-statement.html

a pár odkazů z googlu http://www.sqlrecipes.com/sql_questions_answers/insert_update_record_i f_already_exists-6/, http://blogs.msdn.com/miah/archive/2008/02/17/sql-if-exists-update-els e-insert.aspx
je to častý dotaz projděte si toto http://www.google.com/search?q=update+if+exist+else+insert+mysql
Greeg
Profil
vdaka za linky ale som v slepej ulicke, dostal som sa k 4 moznym rieseniam no ani jedno nevyhovuje:

- ELSE IF je sice jednoduchy na realizaciu ale poriadne zapeka db (musia sa aj tak uskustocnit dva table scany - jeden pre select a druhy pre update - viz Tomasds)
- REPLACE, pomerne drasticke riesenie ktore najpr zmaze cely riadok a na koniec tabulky napise jeho "updatenutu" variantu, funguje len pri duplicitnom klucovom poli.
- no a nakoniec celkom dobre vyzerajuci zapis
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
INSERT INTO Table1 VALUES (...)
ze sa pokusi o update rovnakeho obsahu aky tam uz je row_count vrati nulu
- ON DUPLICATE KEY je tiez jedno z rieseni no v mojej strukture tabulky sa vyuzit neda.

pre lepsiu predstavu, mam tabulku z zvoch poli: ID(key, auto-increment) a TEXT a povedzme ze je to tabulka s poznamkami. cez formular je mozne hromadne upravovat existujuce poznamky a pridavat nove.

ma niekto este nejaky napad?

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