IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

trigger


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    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) ?

  3. #3
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    je viend d'installer wamp pour avoir la derniere version de mysql.
    j'utilise la console

  4. #4
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Je ne pense pas que DATE() existe sans paramètres. Utilise NOW() ou CURDATE() à la place.

  6. #6
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    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 ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [power designer et Sybase] trigger
    Par mr_qno dans le forum Sybase
    Réponses: 4
    Dernier message: 12/07/2006, 18h32
  2. [Interbase6] Trigger : Post_event
    Par Andry dans le forum InterBase
    Réponses: 2
    Dernier message: 13/05/2003, 09h27
  3. Trigger ??
    Par XDeus dans le forum Développement
    Réponses: 6
    Dernier message: 31/03/2003, 09h44
  4. [PostgreSQL] Refus de STATEMENT dans un trigger
    Par alex2205 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/03/2003, 12h51
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo