Autor | Zpráva | ||
---|---|---|---|
Greeg Profil |
#1 · Zasláno: 17. 8. 2008, 01:15:41
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 |
#2 · Zasláno: 17. 8. 2008, 08:26:08
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 |
#3 · Zasláno: 17. 8. 2008, 09:56:41 · Upravil/a: Greeg
thx vykusam
|
||
Alphard Profil |
#4 · Zasláno: 17. 8. 2008, 10:00:16
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 |
#5 · Zasláno: 17. 8. 2008, 11:25:16 · Upravil/a: Greeg
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? |
||
Časová prodleva: 16 let
|
0