Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Basi di dati ~ informatica triennale
 
progetto basi:trigger
Clicca QUI per vedere il messaggio nel forum
collo
:?:?:?
ciao a tuttti, percaso qualcuno ha un'idea su come fare i 3 trigger del progetto di basi di dati??
sono due giorni che cerco di farli andare ma il prog m da sempre errore..
grazie

CaboM.BNA
che tipo di errore ti compare?

collo
DELIMITER $$

create trigger cinema.agg_sala after insert on prenotazione
for each row begin
declare var integer;
select POSTI_OCC into var
from prenotazione,spettacolo
where (spettacolo.ID_SPET = prenotazione.ID_SPET) and (spettacolo.ID_SPET = new.ID_SPET);
update cinema.spettacolo
set var = var +1;
end $$

ho scritto questo codice e nn m da errori pero quando vado a inserire la prenotazione mi dice che nn trova la variabile var tra le colonne del della mia tabella spettacolo

poi_1969
forse devi scrivere cosi
select var = (select posti_occ ...

Dipende dal sql che utilizzi

CaboM.BNA
mmhh.. purtroppo cosi no mi dice molto...

se fosse stato in plpgsql magari ti avrei potuto dare una mano...

collo
grazie ora provo e vi faccio sapere..

CaboM.BNA
con questo comando
code:
update cinema.spettacolo set var = var +1;

tu aggiorni il valore di var all'interno della tabella spettacolo (contenuta nella relazione cinema).

l'errore ti compare se nella tabella spettacolo NON è contenuto un attributo che si chiama "var".

Anche se il codice non lo capisco al 100%, ti faccio anche notare che con l'invocazione dell'UPDATE SENZA la clausola WHERE vengono aggiornati i valori di quell'attributo per TUTTE le tuple della tabella...

collo
grande CaboM.BNA funziona
posto per tutti il codice funzionante


DELIMITER $$

create trigger cinema.agg_sala after insert on prenotazione
for each row begin
update cinema.spettacolo
set POSTI_OCC = POSTI_OCC +1 where (spettacolo.ID_SPET = new.ID_SPET);
end $$

DELIMITER;

RedAngel86
Ragazzi problemone... :sad:
Io stò usando mysql, nella versione di easyphp 2.0b1 e se inserisco 2 trigger contemporaneamente mentre provo a creare il secondo mi dà questo errore:
"questa versione di mysql non supporta multiple triggers with the same action time and event for one table"

Che devo fare?:?

CaboM.BNA
passa a postgres... ;)
io ne ho piu di uno per tabella...

cmq scherzi a parte, prova a condensare in un solo trigger tutte le azioni che vuoi che vengano compiute...
in alternativa prova ad aggiornare la versione che stai utilizzando.. magari c'e n'è una successiva in cui i trigger "multipli" sono utilizzabili...

DarkSchneider
Originally posted by RedAngel86
Ragazzi problemone... :sad:
Io stò usando mysql, nella versione di easyphp 2.0b1 e se inserisco 2 trigger contemporaneamente mentre provo a creare il secondo mi dà questo errore:
"questa versione di mysql non supporta multiple triggers with the same action time and event for one table"

Che devo fare?:?


ha ben ragione ad arrabbiarsi..

che ragione hai di fare due triggers che reagiscano ad uno stesso medesimo evento nello stesso tempo ..( pre - on - post ) sulla stessa tabella?

fanne uno unico, che faccia entrambe le cose che fanno i due triggers

RedAngel86
Già fatto... grazie mille

donivl16
ciao , scusa io uso postgres ma facendo la funzione in modo come ha fatto'collo' nn mi agiorna i posti occupati nella tabella spettacoli. ce qualcuno che mi puo dare una mano.
grazie

Paola86
Ciao, qualcuno ha idea del perchè questo trigger
DELIMITER $$

create trigger aggiorna_occupazione after insert on prenota
for each row
begin
declare posti smallint;
SELECT posti_liberi into posti FROM spettacolo WHERE id_spett = NEW.id_spett;

if posti > 0 THEN

UPDATE spettacolo SET posti_liberi = posti_liberi - 1 WHERE spettacolo.id_spett = NEW.id_spett;

end if

end $$

DELIMITER ;

mi dia errore di sintassi nella query SQL vicino a 'end' linea 13

p.s. in mysql...

CaboM.BNA
manca il ; dopo il "end if"...
code:
.... end if;...

number15
code:
DELIMITER $$ CREATE TRIGGER agg_conto BEFORE INSERT ON posto FOR EACH ROW BEGIN SELECT distinct id_spettatore, conto FROM posto, utente WHERE id_spettatore = id_utente; if conto >= 0.2 then UPDATE utente set conto = conto - 0.2 where id_spettatore = id_utente END $$ DELIMITER ;


Cos'ha che non va?
Mi da errore:
Script line: 2 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 15

DarkSchneider
; dopo la 2° routine di update...

anche se mi intendo di oracle, non di postgre...

ma dovrebbe essere uguale..

number15
Io di nessuno dei due :D
Potresti farmi vedere precisamente dove mettere il ;
Ho provato dopo utente, dopo 0.2 e dopo id_utente ma niente

CaboM.BNA
code:
... if conto >= 0.2 then UPDATE utente set conto = conto - 0.2 where id_spettatore = id_utente; ...


cosi dovrebbe funzionare...

number15
Niente:
Script line: 2 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 15

marbliss
Secondo me manca un ; dopo END (prima di $$)

number15
Nemmemo così

dafth
prova così
-- CREAZIONE FUNZIONE TRIGGER

CREATE OR REPLACE FUNCTION trg_function()
RETURNS trigger AS
$$
BEGIN
---- ISTRUZIONI DA ESEGUIRE

END ;
$$ LANGUAGE 'plpgsql';

-- AGGIUNTA TRIGGER ALLA TABELLA
CREATE TRIGGER nometrigger BEFORE INSERT ON nometabella
FOR EACH ROW EXECUTE PROCEDURE trg_function();

Lallac10
Ciao a tutti ho una domanda qualcuno sa come usare l'array T_ARGV[] in cui vengono passati i parametri dell'inserimento prima che il trigger autorizzi l'inserimento? grazie!

Pietman
Secondo voi cosa si intende per questa frase delle modalità di consegna:

"Esauriente descrizione delle funzioni realizzate, l'elenco dei prodotti software e dei linguaggi utilizzati"

Funzioni sta per:

- Funzioni realizzate nei linguaggi php, plpgsql, etc.

o

-Funzionalità dell'applicazione realizzata, es. spiegare come abbiamo implementato il sistema di prenotazione, etc.

?

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate