Forum » Programiranje » UPDATE INTO v sam vnos zapisa (MYSQL)
UPDATE INTO v sam vnos zapisa (MYSQL)
SynTax64 ::
Potreboval bi pomoč pri vstavljanju določenega podatka ob vpisu podatka v bazo.
Recimo imamo v neki tabeli atribute: atribut_1,atribut_2, atribut_3.
Kar sedaj želim jaz je, da ko vnesem podatek atribut_1,atribut_2 v bazo, da se mi ob tem vpisu v atribut_3 vpiše neka izračunana vrednost ki bazira na podlagi prvih dveh atributov.
Recimo imamo v neki tabeli atribute: atribut_1,atribut_2, atribut_3.
Kar sedaj želim jaz je, da ko vnesem podatek atribut_1,atribut_2 v bazo, da se mi ob tem vpisu v atribut_3 vpiše neka izračunana vrednost ki bazira na podlagi prvih dveh atributov.
jernejl ::
atribut_3 lahko izračunaš že v kodi in ga potem izračunanega vstaviš v tabelo hkrati z atrubit_1 in atribut_2, lahko pa uporabiš trigger.
http://dev.mysql.com/doc/refman/5.5/en/...
http://dev.mysql.com/doc/refman/5.5/en/...
SynTax64 ::
Zadeva trenutno funkcionira, če nek zapis preneseš v nek nov zapis v novo "začasno tabelo"
CREATE TRIGGER izracun_vsote AFTER INSERT ON izracun
FOR EACH ROW
INSERT tmp_tabela SET vsota=NEW.atr1_podatek_tabela1+NEW.atr2_podatek_tabela1;
Torej v tem primeru se podatek atr1, atr2 iz trenutne tabele1(izracun) prenese v tabelo (tmp_tabela), terustrezno izračuna.
Vendar rešitev z dodatno tabelo ni rešitev, saj želim zapisati podatek v tem primeru vsoto v ta isti zapis(vrstico) kamor sem vnesel atr1 ter atr2.
Morda kakšen namig glede tega kako se naj lotim zadeve?
CREATE TRIGGER izracun_vsote AFTER INSERT ON izracun
FOR EACH ROW
INSERT tmp_tabela SET vsota=NEW.atr1_podatek_tabela1+NEW.atr2_podatek_tabela1;
Torej v tem primeru se podatek atr1, atr2 iz trenutne tabele1(izracun) prenese v tabelo (tmp_tabela), terustrezno izračuna.
Vendar rešitev z dodatno tabelo ni rešitev, saj želim zapisati podatek v tem primeru vsoto v ta isti zapis(vrstico) kamor sem vnesel atr1 ter atr2.
Morda kakšen namig glede tega kako se naj lotim zadeve?
jernejl ::
Tudi to lahko narediš s triggerjem.
Primer:
http://www.java2s.com/Tutorial/MySQL/02...
Še eden:
http://www.w3resource.com/mysql/mysql-t...
Primer:
http://www.java2s.com/Tutorial/MySQL/02...
Še eden:
http://www.w3resource.com/mysql/mysql-t...
Zgodovina sprememb…
- spremenil: jernejl ()
SynTax64 ::
jernejl hvala lepa za odgovor mi je zelo pomagala tvoja povezava.
Torej, da še pojasnim kaj je rešitev mojega problema: glede na to da izračunan podatek vrivamo preden se ta zapiše v bazo je potrebno najprej določiti kdaj se TRIGGER izvede kar v mojem primeru pomeni BEFORE UPDATE, torej kalkulacija/vpis/preverjanje atributov pred zapisom v bazo. Ker potrebujem le vriniti podatek v ta isti zapis v delu za trigger_event torej pred telesom TRIGGERja ne vnašamo podatkov o tabeli ampak enostavno v primeru da sledi več stavkov dodamo BEGIN ....telo trigerja ...END stavek, v trigger_body pa le stavke za kalkulacijo.
Torej, da še pojasnim kaj je rešitev mojega problema: glede na to da izračunan podatek vrivamo preden se ta zapiše v bazo je potrebno najprej določiti kdaj se TRIGGER izvede kar v mojem primeru pomeni BEFORE UPDATE, torej kalkulacija/vpis/preverjanje atributov pred zapisom v bazo. Ker potrebujem le vriniti podatek v ta isti zapis v delu za trigger_event torej pred telesom TRIGGERja ne vnašamo podatkov o tabeli ampak enostavno v primeru da sledi več stavkov dodamo BEGIN ....telo trigerja ...END stavek, v trigger_body pa le stavke za kalkulacijo.
Zgodovina sprememb…
- spremenil: SynTax64 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [SQL] Kako omejiti vrednost med parent in child tabelo?Oddelek: Programiranje | 1422 (1216) | MrStein |
» | SQL problemOddelek: Programiranje | 1683 (1301) | win64 |
» | xml dnevni uvoz v bazoOddelek: Programiranje | 1770 (1523) | keworkian |
» | [PHP]Timestamp in mysqlOddelek: Programiranje | 2349 (2014) | 680x0 |
» | [T-SQL] Kako vnest podatek v bazo in da ti hkrati vrne id?Oddelek: Programiranje | 2886 (2604) | dmok |