Vai al contenuto


Foto

[MySQL] Problema stupido con trigger


Questa discussione e' stata archiviata Questo significa che non e' possibile rispondere
99 risposte a questa discussione

#21 MadJackal

MadJackal

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStelletta
  • 3.105 Messaggi:

Inviato 18 giugno 2011 - 18:27

Il problema stupido è usare MySQL :vabe: :vabe:




:vabe:
In Soviet Italy, the evil army owns you!

#22 LilithSChild

LilithSChild

    Schiavo

  • Donatori di sperma
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 12.764 Messaggi:

Inviato 18 giugno 2011 - 18:28

Il problema stupido è usare MySQL :vabe: :vabe:




:vabe:


Sto cazzo.

#23 MadJackal

MadJackal

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStelletta
  • 3.105 Messaggi:

Inviato 18 giugno 2011 - 18:50

Sto cazzo.


Sto cazzo un cazzo. :vabe:
In Soviet Italy, the evil army owns you!

#24 LilithSChild

LilithSChild

    Schiavo

  • Donatori di sperma
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 12.764 Messaggi:

Inviato 18 giugno 2011 - 18:52

?[/url]":is89ncil]Sto cazzo.


Sto cazzo un cazzo. :vabe:


torna a giocare con gli archivi. :vabe:

#25 trallallero

trallallero

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 16.188 Messaggi:

Inviato 18 giugno 2011 - 19:00

CREATE TRIGGER tr_incasso BEFORE UPDATE ON Storico_vendite

DECLARE prezzo_n FLOAT;

DECLARE prezzo_ns FLOAT;

DECLARE prezzo_r FLOAT;

DECLARE prezzo_rs FLOAT;

DECLARE prezzo_c FLOAT;

DECLARE prezzo_cs FLOAT;

SELECT prezzo FROM Biglietti WHERE tipo="normale" into prezzo_n;

SELECT prezzo FROM Biglietti WHERE tipo="normale_s" into prezzo_ns;

SELECT prezzo FROM Biglietti WHERE tipo="ridotto" into prezzo_r;

SELECT prezzo FROM Biglietti WHERE tipo="ridotto_s" into prezzo_rs;

SELECT prezzo FROM Biglietti WHERE tipo="comitiva" into prezzo_c;

SELECT prezzo FROM Biglietti WHERE tipo="comitiva_s" into prezzo_cs;

FOR EACH ROW

	BEGIN

	SET NEW.incasso=(prezzo_n*NEW.normale) + (prezzo_ns*NEW.normale_s) + (prezzo_r*NEW.ridotto) + (prezzo_rs*NEW.ridotto_s) + (prezzo_c*NEW.comitiva) + (prezzo_cs*NEW.comitiva_s);

	END;


errore di sintassi alla riga 2 :vabe:

Si ma toyo, googlare un esempio di trigger sql prima di fare domande qui, no ? :vabe:
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#26 trallallero

trallallero

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 16.188 Messaggi:

Inviato 18 giugno 2011 - 19:01

Il problema stupido è usare MySQL :vabe: :vabe:




:vabe:

;)
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#27 MadJackal

MadJackal

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStelletta
  • 3.105 Messaggi:

Inviato 18 giugno 2011 - 19:20

torna a giocare con gli archivi. :vabe:


Torno a scrivere trigger in python, semmai. :vabe:
Per il resto mi dispiace, ma MySQL non è ancora abbastanza avanzato per me (partendo dall'orribile "uno schema -> un database", con database e schema visti come intercambiabili) - nonostante si siano ormai da un annetto resi conto che non era il caso di mettere come motore di default MyISAM... ;)


Poi oh, a, mentre mia madre succhia cazzi, ognuno il suo :vabe:
In Soviet Italy, the evil army owns you!

#28 LilithSChild

LilithSChild

    Schiavo

  • Donatori di sperma
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 12.764 Messaggi:

Inviato 18 giugno 2011 - 19:22

?[/url]":jn38fyd5] torna a giocare con gli archivi. :vabe:


Torno a scrivere trigger in python, semmai. :vabe:
Per il resto mi dispiace, ma MySQL non è ancora abbastanza avanzato per me (partendo dall'orribile "uno schema -> un database", con database e schema visti come intercambiabili) - nonostante si siano ormai da un annetto resi conto che non era il caso di mettere come motore di default MyISAM... ;)


Poi oh, a, mentre mia madre succhia cazzi, ognuno il suo :vabe:


per quello a cui serve è più che buono, a, mentre mia madre succhia cazzi, ogni compito il suo strumento, e se da sviluppatore ancora non hai capito sta semplice regola stai messo male.

#29 toyo

toyo

    sono triste

  • Donatori di sperma
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 43.978 Messaggi:

Inviato 18 giugno 2011 - 19:56

CREATE TRIGGER tr_incasso BEFORE UPDATE ON Storico_vendite

AS

DECLARE ...
...



non funziona :vabe:, sempre errore di sintassi a riga 2


fc, lo lascio com'è, per il tempo che abbiamo fatto i trigger (1 lezione) non mi stanno a rompere il cazzo per i declare dentro al for each.





Ah ma avete idea di perchè Mysql saltì a piè pari i CHECK? :vabe:


non sono scemo io eh,

As the MySQL Reference Manual says:
"The CHECK clause is parsed but ignored by all storage engines."




cioè non mi pare una cosina da niente :vabe:

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#30 MadJackal

MadJackal

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStelletta
  • 3.105 Messaggi:

Inviato 18 giugno 2011 - 20:11

Ah ma avete idea di perchè Mysql saltì a piè pari i CHECK? ;)

non sono scemo io eh,

As the MySQL Reference Manual says:
"The CHECK clause is parsed but ignored by all storage engines."


cioè non mi pare una cosina da niente :vabe:


Easy, non sono supportati.
Le constraint al massimo puoi metterle nel codice, a che serve metterle nel DB? :vabe:
Al massimo hai un controllo di validità sul dato che metti nel campo, ma non è detto visto che il controllo non è abilitato di default - l'azione standard prevede che il valore venga trasformato in qualcosa di valido, senza errori. :?


per quello a cui serve è più che buono, a, mentre mia madre succhia cazzi, ogni compito il suo strumento, e se da sviluppatore ancora non hai capito sta semplice regola stai messo male.


Ho aggiunto appunto la nota in fondo a quanto ho scritto perchè tutto dipende da cosa è richiesto al db: per un semplice data storage su cui si usa un qualche ORM va tutto bene, non si ha bisogno di un db relazionale. :vabe:
Comunque io avrei paura per le tabelle di "sistema" con MySQL...
In Soviet Italy, the evil army owns you!

#31 trallallero

trallallero

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 16.188 Messaggi:

Inviato 18 giugno 2011 - 20:21

Torno a scrivere trigger in python, semmai. :vabe:

Famosissimo server sql :vabe:
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#32 MadJackal

MadJackal

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStelletta
  • 3.105 Messaggi:

Inviato 18 giugno 2011 - 20:24

?[/url]":1ltp2sog] CREATE TRIGGER tr_incasso BEFORE UPDATE ON Storico_vendite

AS

DECLARE ...
...



non funziona :vabe:, sempre errore di sintassi a riga 2


fc, lo lascio com'è, per il tempo che abbiamo fatto i trigger (1 lezione) non mi stanno a rompere il cazzo per i declare dentro al for each.


http://dev.mysql.com...te-trigger.html
http://dev.mysql.com...en/declare.html


RTFM! :vabe:
No, dico sul serio, la documentazione di MySQL è un pò casinara ma è completa :vabe:
In Soviet Italy, the evil army owns you!

#33 MadJackal

MadJackal

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStelletta
  • 3.105 Messaggi:

Inviato 18 giugno 2011 - 20:25

[quote name="trallallero ?":a6gxk2ia] [quote name='"MadJackal ?":a6gxk2ia]Torno a scrivere trigger in python' date=' semmai. :vabe: [/quote']
Famosissimo server sql :vabe:[/quote]

E' famosissimo sì, ci fanno pure conference annuali... in Germania (anche se quest'anno mi pare vogliano farla in Olanda) :vabe:
Ed i trigger puoi scriverli in una mezza dozzina di linguaggi (C incluso). E così pure per le "funzioni".
In Soviet Italy, the evil army owns you!

#34 trallallero

trallallero

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 16.188 Messaggi:

Inviato 18 giugno 2011 - 20:28

?[/url]":1z7vobt4]
Famosissimo server sql :vabe:


E' famosissimo sì, ci fanno pure conference annuali... in Germania (anche se quest'anno mi pare vogliano farla in Olanda) :vabe:
Ed i trigger puoi scriverli in una mezza dozzina di linguaggi (C incluso). E così pure per le "funzioni".

Questa mi mancava... pensavo che si interfacciasse al sql server, non che ne avesse uno suo :vabe:

edit: Anche perché proprio di recente ho dovuto "designare" il nostro "gestore progetti" ed un'alternativa era proprio python + postgres. Non ho trovato nulla che parlasse di python sql server.
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#35 toyo

toyo

    sono triste

  • Donatori di sperma
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 43.978 Messaggi:

Inviato 18 giugno 2011 - 20:37

?[/url]":qlroldy6] Ah ma avete idea di perchè Mysql saltì a piè pari i CHECK? :vabe:

non sono scemo io eh,


cioè non mi pare una cosina da niente :vabe:


Easy, non sono supportati.
Le constraint al massimo puoi metterle nel codice, a che serve metterle nel DB? :vabe:


Ma lo penso anch'io, il problema è: come lo scrivo nella relazione del progetto? :asd:
Nella sezione "vincoli d'integrità" dovrò dire che i vincoli vengono controllati da php, il che è concettualmente strasbagliato ;)

Scriverò tipo "visto i limiti di mysql (niente check, niente raise_application_error, etc), il controllo sui vincoli di integrità, quando non risolvibili tramite applicazione di valori di default via trigger, viene fatta da php", boh :?

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#36 toyo

toyo

    sono triste

  • Donatori di sperma
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 43.978 Messaggi:

Inviato 18 giugno 2011 - 20:39

?[/url]":18nmpicy]


non funziona :vabe:, sempre errore di sintassi a riga 2


fc, lo lascio com'è, per il tempo che abbiamo fatto i trigger (1 lezione) non mi stanno a rompere il cazzo per i declare dentro al for each.


http://dev.mysql.com...te-trigger.html
http://dev.mysql.com...en/declare.html


RTFM! :vabe:
No, dico sul serio, la documentazione di MySQL è un pò casinara ma è completa :vabe:



avevo già letto prima di aprire il topic, non ci sono esempi di trigger con il for each row e variabili dichiarate/inizializzate fuori ;)

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#37 LilithSChild

LilithSChild

    Schiavo

  • Donatori di sperma
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 12.764 Messaggi:

Inviato 18 giugno 2011 - 20:41

?[/url]":1rkmm8lz]

E' famosissimo sì, ci fanno pure conference annuali... in Germania (anche se quest'anno mi pare vogliano farla in Olanda) :vabe:
Ed i trigger puoi scriverli in una mezza dozzina di linguaggi (C incluso). E così pure per le "funzioni".

Questa mi mancava... pensavo che si interfacciasse al sql server, non che ne avesse uno suo :vabe:

edit: Anche perché proprio di recente ho dovuto "designare" il nostro "gestore progetti" ed un'alternativa era proprio python + postgres. Non ho trovato nulla che parlasse di python sql server.


Semplicemente perché non esiste.

#38 trallallero

trallallero

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 16.188 Messaggi:

Inviato 18 giugno 2011 - 20:45

Ah ecco appunto, l'avrei trovato altrimenti.
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#39 toyo

toyo

    sono triste

  • Donatori di sperma
  • StellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 43.978 Messaggi:

Inviato 18 giugno 2011 - 22:01

Nex, mi sa che ti sbagliavi di grosso.

Leggendo dal mio libro di testo, il for each row non è che delimiti una parte del trigger, è semplicemente una clausola che dice
-se non lo metti: deve essere attivato una sola volta (anche in caso di inserimento/update/cancellazione multiplo)
-se lo metti: deve essere attivato prima/dopo l'inserimento/update/cancellazione di ogni riga


Quindi non cambia niente dichiarare le variabili prima o dopo il for each row, lo lascio com'è e basta
CREATE TRIGGER tr_incasso BEFORE UPDATE ON Storico_vendite 

   FOR EACH ROW

   BEGIN

   DECLARE prezzo_n FLOAT;

   DECLARE prezzo_ns FLOAT;

   DECLARE prezzo_r FLOAT;

   DECLARE prezzo_rs FLOAT;

   DECLARE prezzo_c FLOAT;

   DECLARE prezzo_cs FLOAT;

   SELECT prezzo FROM Biglietti WHERE tipo="normale" into prezzo_n;

   SELECT prezzo FROM Biglietti WHERE tipo="normale_s" into prezzo_ns;

   SELECT prezzo FROM Biglietti WHERE tipo="ridotto" into prezzo_r;

   SELECT prezzo FROM Biglietti WHERE tipo="ridotto_s" into prezzo_rs;

   SELECT prezzo FROM Biglietti WHERE tipo="comitiva" into prezzo_c;

   SELECT prezzo FROM Biglietti WHERE tipo="comitiva_s" into prezzo_cs;

   SET NEW.incasso=(prezzo_n*NEW.normale) + (prezzo_ns*NEW.normale_s) + (prezzo_r*NEW.ridotto) + (prezzo_rs*NEW.ridotto_s) + (prezzo_c*NEW.comitiva) + (prezzo_cs*NEW.comitiva_s);

   END;



Se sbaglio correggiutemi

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#40 Sgobbone

Sgobbone

    Schiavo

  • Membri
  • StellettaStellettaStellettaStellettaStellettaStellettaStellettaStelletta
  • 56.432 Messaggi:

Inviato 18 giugno 2011 - 22:15

correggetemi

done.

Tc5wAeT.jpg

dimmelo tu, cosa dovevo fare...
forse chissà, forse potrei cambiare...