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 12/05/2008, 12h20   #1
Invité régulier
 
Inscription : décembre 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 47
Points : 9
Points : 9
Par défaut Trigger - date de création

Bonjour à tous,

Habitué des grosses SGBD telles que Oracle et SQL Server, je fais mes débuts dans le langage procédural sous MySQL. Je me heurte d'ores et déjà à un problème de syntaxe. Le voici :

Code :
1
2
3
4
5
6
7
DELIMITER |
CREATE TRIGGER Trig_News BEFORE INSERT ON news
  FOR EACH ROW BEGIN
    SET new.CreatedDate = CURDATE();
    END;
|
DELIMITER ;
Je voudrai simplement ajouter la date de création d'une news automatiquement au tuple en cours d'enregistrement.
Voici les messages d'erreur de la console :
MySQL a répondu:

#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 'DELIMITER |
CREATE TRIGGER Trig_News BEFORE INSERT ON news
FOR EACH ROW BEGI' at line 1


C'est ennuyeux car je me suis basé sur un bout de code provenant de la doc' officielle (ici)

Merci d'avance.
j.mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2008, 17h11   #2
Membre éprouvé
 
Avatar de nounetmasque
 
Inscription : janvier 2003
Messages : 491
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 491
Points : 488
Points : 488
Je crois que si tu déclares ta colonne createdDate en type timestamp (et si c la première de ce type dans ta table) la valeur insérer et celle de la dernière commande update ou insert (cf. la doc mysql).
__________________
"Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."
nounetmasque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 20h51   #3
Invité régulier
 
Inscription : décembre 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 47
Points : 9
Points : 9
Bonjour nounetmasque,

Merci pour ta réponse. Effectivement le type timestamp permet de réaliser ce dont j'ai besoin mais j'aimerai tout de même connaître mon erreur car je ne vois vraiment pas ce qui cloche
j.mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 22h22   #4
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 409
Points : 6 409
Curieux . J'ai exécuté ton code et ça passe sans aucun souci...
Quelle est ta version de MySQL, et quel client utilises-tu ?

ced
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 17h04   #5
Invité régulier
 
Inscription : décembre 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 47
Points : 9
Points : 9
Bonjour Ced,

Je réponds avec un peu de retard, désolé. Voici les versions que j'utilise :
phpMyAdmin : 2.11.0
MySQL : 5.0.45

A noter que le timestamp marche mais ne prend pas en compte les UPDATE, je peux ainsi uniquement renseigner les dates et heures de création.
j.mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h27.


 
 
 
 
Partenaires

Hébergement Web