Mitenkäs MySQL onnistuu, et päivitetään tietoja mikäli tietokannassa semmoinen on ellei niin lisätään uusi?
Pitääkös tehdä näin.
UPDATE ...... Jos epäonnistui niin sit INSERT ..... Eikö ole helpompaa tapaa?
Tietojen päivitys MySQL?
7
752
Vastaukset
- Neratetst
---
- ollenkaan
Käytät IF EXISTS jolla löydät olemassa olevat ja sitten UPDATE. Jos ei löydy niin sitten INSERT.
Ei muuten ole mitenkään MySQL-kohtainen vaan sama juttu kaikilla SQL-kannoilla. - Neratetst
ollenkaan kirjoitti:
Käytät IF EXISTS jolla löydät olemassa olevat ja sitten UPDATE. Jos ei löydy niin sitten INSERT.
Ei muuten ole mitenkään MySQL-kohtainen vaan sama juttu kaikilla SQL-kannoilla.Kerroppas miten?
Yritin Googlettaa, mut löyty vain taulukoiden poistoa jotka ei sovi tähän tarkoitukseen.
Löysin INSERT INTO wordcount (word,count) VALUES ('a_word',1) ON DUPLICATE KEY UPDATE count=count 1; - Neratetst
Neratetst kirjoitti:
Kerroppas miten?
Yritin Googlettaa, mut löyty vain taulukoiden poistoa jotka ei sovi tähän tarkoitukseen.
Löysin INSERT INTO wordcount (word,count) VALUES ('a_word',1) ON DUPLICATE KEY UPDATE count=count 1;http://mysql.com/doc/refman/5.0/en/insert-on-duplicate.html tuon siis löysin.
- ollenkaan
Neratetst kirjoitti:
Kerroppas miten?
Yritin Googlettaa, mut löyty vain taulukoiden poistoa jotka ei sovi tähän tarkoitukseen.
Löysin INSERT INTO wordcount (word,count) VALUES ('a_word',1) ON DUPLICATE KEY UPDATE count=count 1;>Kerroppas miten?
Jos oletetaan että olet päivittämässä varaosataulua niin syntaksi menee jotenkin noin:
if EXISTS (SELECT 1 FROM varaosat WHERE osa_ID=@haku)
UPDATE varaosat ... WHERE osa_ID = @haku
else
INSERT varaosat... - Neratetst
ollenkaan kirjoitti:
>Kerroppas miten?
Jos oletetaan että olet päivittämässä varaosataulua niin syntaksi menee jotenkin noin:
if EXISTS (SELECT 1 FROM varaosat WHERE osa_ID=@haku)
UPDATE varaosat ... WHERE osa_ID = @haku
else
INSERT varaosat...Ensiksi kiitoksia todella paljon testaan tuota illemmal.
Itselläni on käytössä MySQL 5 joten alikyselyt ei ole ongelma, mutta MySQL 4 ne eivät toimi. Ilmeisesti tuo ei ole alikysely ja toimii MySQL 4?
Kumpaa tapaa suosittelet tätä vai tuota minun löytämääni? Ja miksi. - PIProd
Neratetst kirjoitti:
Ensiksi kiitoksia todella paljon testaan tuota illemmal.
Itselläni on käytössä MySQL 5 joten alikyselyt ei ole ongelma, mutta MySQL 4 ne eivät toimi. Ilmeisesti tuo ei ole alikysely ja toimii MySQL 4?
Kumpaa tapaa suosittelet tätä vai tuota minun löytämääni? Ja miksi.Itse olen käyttänyt ohjelmissani yksinkertaisissa kannoissa updaten sijaan käytäntöä delete -> insert.
Tämähän tekee periaatteessa päivityksen, delete suoritetaan jos primary key on tiedossa. Näin ollen ei tarvitse tehdä update lle omaa toiminnallisuutta ollenkaan.
Ongelmia tulee tietenkin jos on ko tauluun on paljon relaatioita pääavaimen kautta (jopa hajoavia / tuhoavia sellaisia), tai insert on hankalampi kuin update. Mutta jos insert on yksinkertainen ja relaatioita ei ole tai ne voidaan helposti korjata tämä on yksi tapa.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 542768
- 612611
SDP:n lyhyt selviytymisopas
1. Komitea on vastaus, oli kysymys mikä tahansa Jos maailma on muuttumassa tai jossain palaa, demari ei hätiköi. Ensin p302128- 631907
- 551885
Kiva kun SDP alkaa hallitsemaan Suomea
Vanhat hyvät ajat taas palaavat ja kansa vaurastuu. Muistatteko vielä Sorsan aikakauden? Silloin Suomessa tehtiin jopa341597Mitä se olisi
Jos sinä mies saisit sanoa kaivatullesi mitä vain juuri nyt. Ilman mitään seuraamuksia yms. Niin mitä sanoisit?41935Toivoisitko
Toivoisitko, että kaivattusi olisi introvertimpi tai extrovertimpi? Itsenäinen tai tarvitsisi enemmän apua/sinua? Osoit111857Nanna Karalahti :Paljastus bisneksistä Jere Karalahden kanssa!
Ottanut yhteyttä seiskalehden toimittajaan ja kertonut totuuden yhteisestä Herotreeni-nimisestä verkkovalmenuksesta.123839Sotekeskus
Aloite on hyvä, kiitokset siitä. Mutta jos olette yhtään seuranneet hyvinvointialueen kokouksia niin sehän on jo nuijit37814