[MySQL] Problema stupido con trigger
#21
Inviato 18 giugno 2011 - 18:27
#22
Inviato 18 giugno 2011 - 18:28
Il problema stupido è usare MySQL
Sto cazzo.
#23
Inviato 18 giugno 2011 - 18:50
Sto cazzo.
Sto cazzo un cazzo.
#24
Inviato 18 giugno 2011 - 18:52
?[/url]":is89ncil]Sto cazzo.
Sto cazzo un cazzo.
torna a giocare con gli archivi.
#25
Inviato 18 giugno 2011 - 19:00
Si ma toyo, googlare un esempio di trigger sql prima di fare domande qui, no ?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
#26
Inviato 18 giugno 2011 - 19:01
Il problema stupido è usare MySQL
#27
Inviato 18 giugno 2011 - 19:20
torna a giocare con gli archivi.
Torno a scrivere trigger in python, semmai.
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
#28
Inviato 18 giugno 2011 - 19:22
?[/url]":jn38fyd5] torna a giocare con gli archivi.
Torno a scrivere trigger in python, semmai.
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
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
Inviato 18 giugno 2011 - 19:56
CREATE TRIGGER tr_incasso BEFORE UPDATE ON Storico_vendite
AS
DECLARE ...
...
non funziona , 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?
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
FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
Mai più giorni felici
#30
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
Easy, non sono supportati.
Le constraint al massimo puoi metterle nel codice, a che serve metterle nel DB?
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.
Comunque io avrei paura per le tabelle di "sistema" con MySQL...
#31
Inviato 18 giugno 2011 - 20:21
Famosissimo server sqlTorno a scrivere trigger in python, semmai.
#32
Inviato 18 giugno 2011 - 20:24
?[/url]":1ltp2sog] CREATE TRIGGER tr_incasso BEFORE UPDATE ON Storico_vendite
AS
DECLARE ...
...
non funziona , 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!
No, dico sul serio, la documentazione di MySQL è un pò casinara ma è completa
#33
Inviato 18 giugno 2011 - 20:25
Famosissimo server sql [/quote]
E' famosissimo sì, ci fanno pure conference annuali... in Germania (anche se quest'anno mi pare vogliano farla in Olanda)
Ed i trigger puoi scriverli in una mezza dozzina di linguaggi (C incluso). E così pure per le "funzioni".
#34
Inviato 18 giugno 2011 - 20:28
Questa mi mancava... pensavo che si interfacciasse al sql server, non che ne avesse uno suo
?[/url]":1z7vobt4]
Famosissimo server sql
E' famosissimo sì, ci fanno pure conference annuali... in Germania (anche se quest'anno mi pare vogliano farla in Olanda)
Ed i trigger puoi scriverli in una mezza dozzina di linguaggi (C incluso). E così pure per le "funzioni".
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.
#35
Inviato 18 giugno 2011 - 20:37
?[/url]":qlroldy6] Ah ma avete idea di perchè Mysql saltì a piè pari i CHECK?
non sono scemo io eh,
cioè non mi pare una cosina da niente
Easy, non sono supportati.
Le constraint al massimo puoi metterle nel codice, a che serve metterle nel DB?
Ma lo penso anch'io, il problema è: come lo scrivo nella relazione del progetto?
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
Inviato 18 giugno 2011 - 20:39
?[/url]":18nmpicy]
non funziona , 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!
No, dico sul serio, la documentazione di MySQL è un pò casinara ma è completa
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
Inviato 18 giugno 2011 - 20:41
Questa mi mancava... pensavo che si interfacciasse al sql server, non che ne avesse uno suo?[/url]":1rkmm8lz]
E' famosissimo sì, ci fanno pure conference annuali... in Germania (anche se quest'anno mi pare vogliano farla in Olanda)
Ed i trigger puoi scriverli in una mezza dozzina di linguaggi (C incluso). E così pure per le "funzioni".
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
Inviato 18 giugno 2011 - 20:45
#39
Inviato 18 giugno 2011 - 22:01
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
Inviato 18 giugno 2011 - 22:15
done.correggetemi
dimmelo tu, cosa dovevo fare...
forse chissà, forse potrei cambiare...