Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Voiko tietoa tallentaa kantaan "update" -käskyllä, kun tieto tallennetaan ekaa kertaa?

Antti80 [30.07.2006 18:22:12]

#

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ä?

ajv [30.07.2006 18:45:18]

#

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... :)

Antti80 [30.07.2006 20:12:05]

#

Ok.

Perhana, eikö olisikin paljon kätevämpää jos olisi vain "update" joka hoitaisi kaiken? Kenelle voin antaa palautetta? :D

Smuliz [30.07.2006 20:17:18]

#

http://www.mysql.com/company/contact/

Antti80 [30.07.2006 20:27:05]

#

Kiitos :)

Olga [30.07.2006 21:37:44]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta