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

741

    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. Hyvää syntymäpäivää Sanna 40 vee!!!!

      ᕼᗩᑭᑭY ᗷIᖇTᕼᗞᗩY Sister ❣️🥰 🎉🎂✨🍰🥳 🥳🎂🥂 🎉🎊🎁🎈🎂
      Maailman menoa
      127
      5705
    2. Mikä on vaikeinta siinä, että menetti yhteyden kaivattuun, jota vielä ajattelee?

      Mikä jäi kaihertamaan? Jos jokin olisi voinut mennä toisin, mitä se olisi ollut? Mitä olisit toivonut vielä ehtiväsi san
      Ikävä
      395
      2469
    3. Kerro kaivattusi etunimi

      Miehille..
      Ikävä
      131
      2400
    4. Persut rahoittavat velkarahalla rikkaiden ökyelämää

      Minkä vuoksi persut eivät leikkaa rikkailta, joilla on maksukykyä? Tuskinpa tuo persujen käytös saa Suomen kansalta hyv
      Maailman menoa
      4
      2042
    5. Kerro kaivattusi etunimi

      Naisille
      Ikävä
      56
      956
    6. Onhan tää tyhmää ajatella sua kun tuskin ees muistat mua

      Hyvää yötä sinne jonnekin. 💔
      Ikävä
      10
      922
    7. Kun ei numeroa

      niin en edes voi viestittää, et suunnitelmiin tuli muutos. Ikävä on, ja kasvaa vaan🤍
      Ikävä
      8
      912
    8. Mikä musta tekee

      Oikein haluttavan sun silmissä? Mä en ymmärrä. Parasta aika mennyt ko ohi 😃
      Ikävä
      51
      872
    9. Millainen on

      Ihanne kumppani
      Ikävä
      76
      795
    10. Temusta tilaamiseen tulee muutos

      Alle 150 euron tullivapaus poistuu. Vihdoinkin kankea EU saa jotakin aikaiseksi. https://www.iltalehti.fi/digiuutiset/
      Maailman menoa
      101
      755
    Aihe