Tietojen päivitys MySQL?

Neratetst

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?

7

650

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Metsäkoneen kuljettaja huuteli tutkijalle

      "voisit kyllä ottaa rintaliivit pois ennen kuin tulet minulle juttelemaan, hän sanoo." https://yle.fi/a/74-20106446 On
      Suomussalmi
      704
      10250
    2. Suomi on täysin sekaisin

      Jo ties monettako päivää hirveä itku ja poru jostain helvetin nilviäisistä. https://www.is.fi/taloussanomat/art-2000010
      Maailman menoa
      421
      4543
    3. Kaikki ei vieläkään usko luontokatoon.

      Suomussalmen Hukkajoella foliohattu metsäkoneen kuljettaja tuhosi tuhansia harvinaisia jokihelmisimpukoita eli raakkuja
      Kajaani
      92
      3084
    4. Sano vain suoraan, että nyt riittää

      ettei kiinnosta. Sano, että lopeta! En ihmettelisi, jos olet saanut tarpeeksesi ja toivot minun ymmärtävän lopettaa. Eh
      Ikävä
      43
      2875
    5. Ohhoh! Ex-pääministeri Sanna Marinin Joni-rakas paljasti ilouutisen: "Tässä kuussa..."

      Sanna Marin on ollut naimisissa Markus Räikkösen kanssa. Nyt hänen seurassaan on usein julkkishiusmuotoilija Joni Willb
      Kotimaiset julkkisjuorut
      55
      2704
    6. Mari Rantanen asettaa sairaan lapsen edun oman uransa edelle - (tekikö Marin samaa)

      Noin toimii kunnon vastuuntuntoinen äiti, mutta siitäkin nämä mt-ongelmaiset vasemmistolaiset häntä täällä haukkuvat. "
      Maailman menoa
      230
      2698
    7. Mitä ajattelet aina

      Kun hän tulee näköpiiriin?
      Ikävä
      154
      1874
    8. Luokatonta toimintaa

      Tyrmistyttävää toimintaa Stora Enson korjuu yrittäjältä Hukkajoella. Täyttä piittaamattomuutta laeista ja luontoarvoista
      Suomussalmi
      73
      1748
    9. Ensimmäisestä kohtaamisesta saakka

      minulla on ollut hämmentynyt olo. Miten voit tuntua siltä, että olisin tuntenut sinut aina? Sinun kanssasi on yhtä aikaa
      Ikävä
      14
      1640
    10. Maailmankuulu homopingviini on kuollut

      Minä niin toivoin että pariskunta olisi saatu kunniavieraiksi ensi kesän Prideen. 💔 "Maailmankuulu homopingviini on k
      Lapua
      6
      1443
    Aihe