Kun tietokannassa ei ole esim. profiilin tietoa niin käyttäjä joutuu kirjoittamaan ekalla kerralla kaiken tiedon ja ne tallennetaan tähän tyyliin:
$sql_lauseke = "insert into taulu (nimi) values ('$nimi')";
Sitten kun profiilia muokataan niin tähän tyyliin:
$sql_lauseke = "update taulu set nimi='$nimi'";
Ärsyttää, että koodia/tiedostoja tulee noin paljon. Miksi ei voisi ekalla kerralla tiedot olla tyhjää ja tietojen lisäämisen (ja tulevaisuudessa muokkaamisen) voisi tehdä "update" -käskyllä!? Minun ymmärryksen mukaan ei siis voi updatella ekalla kerralla tallentaa tietoja?
Tai onko jotain muuta kiertotietä?
Ei voi updatella, mutta MySQL:ssä toimii;
INSERT INTO table SET Etunimi = 'Mikko', Sukunimi = 'Mallikas'
, jolloin sinun ei tarvitse muuta kuin tietää ollaanko lisäämässä (SQL-lauseen alku INSERT INTO
) vai päivittämässä (UPDATE
), loppuosa lauseesta voi olla samanlainen.
Tuo on kyllä sitten kaukana standardista SQL-kielestä, joten käytä varoen. Jos vaikka kanta vaihtuu, niin aika inhottaavaa alkaa fiksailemaan tollasia. Omissa sovelluksissa tietenkään nyt niin tarkkaa... :)
Ok.
Perhana, eikö olisikin paljon kätevämpää jos olisi vain "update" joka hoitaisi kaiken? Kenelle voin antaa palautetta? :D
Kiitos :)
Itse asiassa moinen on mahdollista. SQL 2003 -standardi esitteli uuden komennon, MERGE. Eli jos tieto löytyy päivitettävästä taulusta, se päivitetään ja jos ei löydy, se lisätään. Valitettavasti MySQL ei tue vielä kyseistä komentoa. MySQL:lle löytyy kuitenkin oma epästandardi vastine, REPLACE.
Aihe on jo aika vanha, joten et voi enää vastata siihen.