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

752

    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. Mitkä asiat

      tekevät vaikeaksi kohdata kaivattusi?
      Ikävä
      74
      1124
    2. 75
      1121
    3. Rakas

      Eihän se tietysti minulle kuulu, mutta missä sinä olet? 😠
      Ikävä
      48
      1014
    4. Miltä se tuntuu

      Miltä se tuntuu havahtua, että on ollut ihmistä kohtaan, joka on rakastanut ja varjellut, täysi m*lkku? Vai havahtuuko s
      Ikävä
      104
      968
    5. Pidit itseäsi liian

      Vanhana minulle? Niinkö?
      Ikävä
      51
      935
    6. En mahda sille mitään

      Olet ihanin ja tykkään sinusta todella paljon.
      Ikävä
      33
      717
    7. Haluaisitko oikeasti

      Vakavampaa välillemme vai tämäkö riittää
      Ikävä
      49
      704
    8. Joko olet luovuttanut

      Mun suhteen?
      Ikävä
      52
      617
    9. Mitä se olisi

      Jos sinä mies saisit sanoa kaivatullesi mitä vain juuri nyt. Ilman mitään seuraamuksia yms. Niin mitä sanoisit?
      Ikävä
      34
      607
    10. Nanna Karalahti :Paljastus bisneksistä Jere Karalahden kanssa!

      Ottanut yhteyttä seiskalehden toimittajaan ja kertonut totuuden yhteisestä Herotreeni-nimisestä verkkovalmenuksesta.
      Kotimaiset julkkisjuorut
      118
      557
    Aihe