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

723

    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. Ensi kesänä

      Näin kesän viimeisenä minuutteina ajattelen sinua. Olisiko seuraava kesä "meidän" kesä? Tänä vuonna ei onnistuttu, mutta
      Ikävä
      66
      3372
    2. Tukalaa kuumuutta

      Tietäisitpä vaan kuinka kuumana olen käynyt viime päivät. Eikä johdu helteestä, vaan sinusta. Mitäköhän taikoja olet teh
      Ikävä
      45
      3184
    3. Anne Kukkohovin karmeat velat ovat Suomessa.

      Lähtikö se siksi pois Suomesta ? Et on noin kar? mean suuret velat naisella olemassa
      Kotimaiset julkkisjuorut
      122
      2688
    4. Sinä, ihastukseni

      Mitä haluaisit tehdä kanssani ensimmäisenä?
      Ihastuminen
      43
      2538
    5. Tiedät ettei tule toimimaan.

      Mielenterveys ei kummallakaan kestä.
      Ikävä
      31
      1953
    6. Okei, myönnetään,

      Oisit sä saanut ottaa ne housutkin pois, mutta ehkä joskus jossain toisaalla. 😘
      Ikävä
      27
      1860
    7. Onko kaivatullasi

      himmeä kuuppa?
      Ikävä
      48
      1636
    8. Mihin hävisi

      Mihin hävisi asiallinen keskustelu tositapahtumista, vai pitikö jonkin Hannulle kateellisen näyttää typeryytensä
      Iisalmi
      86
      1487
    9. On jo heinäkuun viimeinen päivä.

      En taida nähdä sinua koskaan.
      Rakkaus ja rakastaminen
      39
      1330
    10. Lähtikö korvat

      puhtaaksi vaikusta?
      Tuusniemi
      82
      1199
    Aihe