Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/03/2006, 00h24   #1
Membre éclairé
 
Avatar de XtofRoland
 
Inscription : août 2005
Messages : 361
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 361
Points : 340
Points : 340
Par défaut trigger

j'ai deux tables : une d'inventaire l'autre historique des modifs

j'aimerais que toutes modif soit reportée ds la table _hist a l'aide de trigger;

les tables sont acceptées mais les triggers refusés.

j'ai remis le code complet, mais l'erreur de syntaxe doit etre sur le trigger (qui a une seul ligne) en gras

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
CREATE TABLE `mat_pc` (
  `ID` int(11) NOT NULL DEFAULT '0',
  `SN` varchar(20) NOT NULL DEFAULT '',
  `GIEI` varchar(20) NOT NULL DEFAULT '',
  `ComputerName` varchar(20) DEFAULT NULL,
  `user` varchar(25) DEFAULT NULL,
  `CSrv` varchar(6) NOT NULL DEFAULT '',
  `Bureau` varchar(10) DEFAULT NULL,
  `MM` varchar(50) DEFAULT NULL,
  `Proc` varchar(10) DEFAULT NULL,
  `MHz` decimal(10,0) DEFAULT NULL,
  `Ram` decimal(10,0) DEFAULT NULL,
  `HD` decimal(10,0) DEFAULT NULL,
  `MMecran` varchar(50) DEFAULT NULL,
  `Taille` tinyint(4) DEFAULT NULL,
  `SNecran` varchar(20) DEFAULT NULL,
  `Matrice` varchar(25) DEFAULT NULL,
  `Statut` char(2) NOT NULL DEFAULT '',
  `Rem` text,
  `modifedby` varchar(25) NOT NULL DEFAULT '',
  PRIMARY KEY  (`ID`)
)
 
CREATE TABLE `mat_pc_hist` (
  `ID` int(11) NOT NULL DEFAULT '0',
  `SN` varchar(20) NOT NULL DEFAULT '',
  `GIEI` varchar(20) NOT NULL DEFAULT '',
  `ComputerName` varchar(20) DEFAULT NULL,
  `user` varchar(25) DEFAULT NULL,
  `CSrv` varchar(6) NOT NULL DEFAULT '',
  `Bureau` varchar(10) DEFAULT NULL,
  `MM` varchar(50) DEFAULT NULL,
  `Proc` varchar(10) DEFAULT NULL,
  `MHz` decimal(10,0) DEFAULT NULL,
  `Ram` decimal(10,0) DEFAULT NULL,
  `HD` decimal(10,0) DEFAULT NULL,
  `MMecran` varchar(50) DEFAULT NULL,
  `Taille` tinyint(4) DEFAULT NULL,
  `SNecran` varchar(20) DEFAULT NULL,
  `Matrice` varchar(25) DEFAULT NULL,
  `Statut` char(2) NOT NULL DEFAULT '',
  `Rem` text,
  `modifedby` varchar(25) NOT NULL DEFAULT '',
  `datemodif` date NOT NULL DEFAULT '0000-00-00'
) 
 
CREATE TRIGGER mat_pc_hist_tri AFTER INSERT
    ON mat_pc FOR EACH ROW 
BEGIN [b]
INSERT INTO mat_pc_hist VALUES 
new.ID,new.SN,new.GIEI,new.ComputerName,new.user, new.CSrv,new.Bureau,new.MM,new.Proc,new.Mhz,new.Ram,new.HD,new.MMecran,new.Taille,new.SNecran,new.Matrice,new.Statut,new.Rem,new.modifedby,DATE() ;[/b]
END
 
CREATE TRIGGER mat_pc_hist_tru AFTER UPDATE
    ON mat_pc FOR EACH ROW 
BEGIN 
INSERT INTO mat_pc_hist(ID,SN,GIEI,ComputerName,user,CSrv,Bureau,MM,Proc,Mhz,Ram,HD,MMecran,Taille,SNecran,Matrice,Statut,Rem,modifedby,datemodif )
	VALUES(new.ID,new.SN,new.GIEI,new.ComputerName,new.user, new.CSrv,new.Bureau,new.MM,new.Proc,new.Mhz,new.Ram,new.HD,new.MMecran,new.Taille,new.SNecran,new.Matrice,new.Statut,new.Rem,new.modifedby,DATE() );
END
 
CREATE TRIGGER mat_pc_hist_trd AFTER DELETE
    ON mat_pc FOR EACH ROW 
BEGIN 
INSERT INTO mat_pc_hist(ID,SN,GIEI,ComputerName,user,CSrv,Bureau,MM,Proc,Mhz,Ram,HD,MMecran,Taille,SNecran,Matrice,Statut,Rem,modifedby,datemodif )
	VALUES(new.ID,new.SN,new.GIEI,new.ComputerName,new.user, new.CSrv,new.Bureau,new.MM,new.Proc,new.Mhz,new.Ram,new.HD,new.MMecran,new.Taille,new.SNecran,new.Matrice,new.Statut,new.Rem,new.modifedby,DATE() );
END
j'ai une error 1064 qui serait liée au ansi_quote... d'après mister
__________________
Le but de tout developpeur OO est de devenir une référence.
Mon avatar est un ambigramme, les curieux peuvent le retourner ;-)
Aider <> Faire a la place de!!!
XtofRoland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2006, 10h01   #2
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Dans quelle interface crées-tu les triggers ? Tu as pensé à changer le délimiteur ?

Quel est le texte exact du message d'erreur (1064 ça peut être beaucoup de choses) ?
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2006, 10h20   #3
Membre éclairé
 
Avatar de XtofRoland
 
Inscription : août 2005
Messages : 361
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 361
Points : 340
Points : 340
je viend d'installer wamp pour avoir la derniere version de mysql.
j'utilise la console
__________________
Le but de tout developpeur OO est de devenir une référence.
Mon avatar est un ambigramme, les curieux peuvent le retourner ;-)
Aider <> Faire a la place de!!!
XtofRoland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2006, 10h52   #4
Membre éclairé
 
Avatar de XtofRoland
 
Inscription : août 2005
Messages : 361
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 361
Points : 340
Points : 340
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Query OK, 0 rows affected (0.08 sec)
 
mysql> delimiter //
mysql> CREATE TRIGGER mat_pc_hist_tri AFTER INSERT
    ->     ON mat_pc FOR EACH ROW
    -> BEGIN
    -> INSERT INTO mat_pc_hist(ID,SN,GIEI,ComputerName,user,CSrv,Bureau,MM,Proc,
Mhz,Ram,HD,MMecran,Taille,SNecran,Matrice,Statut,Rem,modifedby,datemodif )
    ->  VALUES(new.ID,new.SN,new.GIEI,new.ComputerName,new.user, new.CSrv,new.Bu
reau,new.MM,new.Proc,new.Mhz,new.Ram,new.HD,new.MMecran,new.Taille,new.SNecran,n
ew.Matrice,new.Statut,new.Rem,new.modifedby,DATE() );
    -> END//
ERROR 1064 (42000): 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 5
mysql> delimiter ;
voici un copier coller de ma console
__________________
Le but de tout developpeur OO est de devenir une référence.
Mon avatar est un ambigramme, les curieux peuvent le retourner ;-)
Aider <> Faire a la place de!!!
XtofRoland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2006, 11h29   #5
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Je ne pense pas que DATE() existe sans paramètres. Utilise NOW() ou CURDATE() à la place.
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2006, 12h19   #6
Membre éclairé
 
Avatar de XtofRoland
 
Inscription : août 2005
Messages : 361
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 361
Points : 340
Points : 340
delimiter //
CREATE TRIGGER mat_pc_hist_tri AFTER INSERT
ON mat_pc FOR EACH ROW
BEGIN
insert into mat_pc_hist(ID,SN,GIEI,ComputerName,user,CSrv,Bureau,MM,Proc,Mhz,Ram,HD,MMecran,Taille,SNecran,Matrice,Statut,Rem,modifedby,datemodif )
VALUES(new.ID,new.SN,new.GIEI,new.ComputerName,new.user, new.CSrv,new.Bureau,new.MM,new.Proc,new.Mhz,new.Ram,new.HD,new.MMecran,new.Taille,new.SNecran,new.Matrice,new.Statut,new.Rem,new.modifedby,CURDATE() );
END//
delimiter ;

ca marche impecc! Merci bcp.
<- content

apres une soirée de prise de tete avec un nouveau serveur, c'est agréable autre chose qu'un message d'erreur ;-)
__________________
Le but de tout developpeur OO est de devenir une référence.
Mon avatar est un ambigramme, les curieux peuvent le retourner ;-)
Aider <> Faire a la place de!!!
XtofRoland est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h16.


 
 
 
 
Partenaires

Hébergement Web