Trigger mysql, erreur de syntaxe

Fermé
juju62 - 8 mars 2010 à 17:34
dam75 Messages postés 1041 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 - 9 mars 2010 à 13:42
Bonjour,
J'essaie de créer mon premier trigger mais je n'y arrive pas, il y a une erreur de syntaxe que je n'arrive pas à résoudre :( Est ce que quelqu'un pourrait m'aider? Je vous remercie par avance
CREATE TRIGGER trigger_fluvial AFTER INSERT ON mouvements
	DECLARE @dateMax DATETIME
	SELECT @dateMax = MAX(date_sassee) FROM statistiques_fluviales;
	IF(@dateMax != NEW.date_debut) THEN
		IF(NEW.incident=="") THEN
			INSERT INTO statistiques_fluviales(ecluse, nb_incident1, nb_incident2, nb_sassees_incident_ecluse_semaine, nb_sassees_total_ecluse_semaine, date_sassee)
				NEW.ecluse, 0, 0, 0, 1, NEW.date_debut;
		END IF;
		IF(NEW.incident=="1") THEN
			INSERT INTO statistiques_fluviales(ecluse, nb_incident1, nb_incident2, nb_sassees_incident_ecluse_semaine, nb_sassees_total_ecluse_semaine, date_sassee)
				NEW.ecluse, 1, 0, 1, 1, NEW.date_debut;
		END IF;
		IF(NEW.incident=="2") THEN
			INSERT INTO statistiques_fluviales(ecluse, nb_incident1, nb_incident2, nb_sassees_incident_ecluse_semaine, nb_sassees_total_ecluse_semaine, date_sassee)
				NEW.ecluse, 0, 1, 1, 1, NEW.date_debut;
		END IF;
	ELSE
		IF(NEW.incident=="1") THEN
			UPDATE statistiques_fluviales
			SET nb_incident1=nb_incident1+1, 
				nb_sassees_incident_ecluse_semaine=nb_sassees_incident_ecluse_semaine+1,
				nb_sassees_total_ecluse_semaine=nb_sassees_total_ecluse_semaine+1
			where ecluse != NEW.ecluse and date_sassee=NEW.date_debut;
		END IF;
		IF(NEW.incident=="2") THEN
			UPDATE statistiques_fluviales
			SET nb_incident2=nb_incident2+1, 
				nb_sassees_incident_ecluse_semaine=nb_sassees_incident_ecluse_semaine+1,
				nb_sassees_total_ecluse_semaine=nb_sassees_total_ecluse_semaine+1
			where ecluse != NEW.ecluse and date_sassee=NEW.date_debut;
		END IF;
		IF(NEW.incident=="") THEN
			UPDATE statistiques_fluviales
			SET	nb_sassees_total_ecluse_semaine=nb_sassees_total_ecluse_semaine+1
			where ecluse != NEW.ecluse and date_sassee=NEW.date_debut;
		END IF;
	END IF;


Voici le message d'erreur :
#1064 - 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 'DECLARE @dateMax DATETIME
SELECT @dateMax = MAX(date_sassee) FROM statistiques' at line 2
A voir également:

2 réponses

dam75 Messages postés 1041 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
9 mars 2010 à 13:42
Bonjour,

Il manque un ";" après cette ligne :
DECLARE @dateMax DATETIME
(devrait être DECLARE @dateMax DATETIME;)
1
Utilisateur anonyme
8 mars 2010 à 20:41
Bonjour

Vérifie les trucs tout cons comme les point virgules, majuscules/minuscules...
0