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 23/06/2006, 06h39   #1
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Par défaut Problème d'execution d'un trigger

Bonjour.
J'ai créé un trigger pour mettre une date automatique à l'enregistre.
De mémoire voici ce que j'ai fais.
Code :
1
2
3
4
 
CREATE TRIGGER ma_date AFTER INSERT ma_table
FOR EACH
UPDATE ma_table SET madate=NOW() WHERE idmonchamps=NEW.idmonchamps
Il m'a pas retourné d'erreur elle est enregistré.
Le problème arrive lorsque je veux faire un insert j'ai ce message.

#1442 - Can't update table 'ma_table' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Là je comprend pas pourquoi le trigger le bloque.
Quelqu'un aurait une idée?
Merci
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 11h43   #2
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Bon apparément c'est dù au faite qu'il n'est pas possible de faire un update sur une table alors que le trigger y fait référence aussi.
D'après ce post.
http://www.developpez.net/forums/sho...hlight=trigger
Je test ce soir avant de dire "Résolu"
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 18h44   #3
Membre éclairé

 
Avatar de Soutou
 
Inscription : janvier 2005
Messages : 309
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : janvier 2005
Messages : 309
Points : 328
Points : 328
Oui, on peut bidouiller seulement en LECTURE une table dans un déclencheur portant sur elle même...
Soutou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 02h09   #4
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
ppfff c'est balo en faite je voulais inserer une date automatiquement dans un champs specifiaue lorsque je faisait un enregistrement et une mise à jour d'une date dans un autre champs lorsque l'enregistrement est modifié.

Edit : Finalement oui ça fonctionne avec cette syntaxe.
Code :
1
2
3
 
CREATE TRIGGER monTrigger BEFORE INSERT ON maTable FOR EACH ROW
SET new.ma_date = NOW();
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 11h34   #5
Membre éclairé

 
Avatar de Soutou
 
Inscription : janvier 2005
Messages : 309
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : janvier 2005
Messages : 309
Points : 328
Points : 328
Bien vu, résolu donc!
Soutou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 14h16   #6
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 123
Points : 1 123
Citation:
Envoyé par berceker united
ppfff c'est balo en faite je voulais inserer une date automatiquement dans un champs specifiaue lorsque je faisait un enregistrement et une mise à jour d'une date dans un autre champs lorsque l'enregistrement est modifié.

Edit : Finalement oui ça fonctionne avec cette syntaxe.
Code :
1
2
3
 
CREATE TRIGGER monTrigger BEFORE INSERT ON maTable FOR EACH ROW
SET new.ma_date = NOW();
Depuis MySQL 4.1.2, il est possible de déclarer un TIMESTAMP avec en option ON UPDATE CURRENT_TIMESTAMP.
__________________
Alexandre T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2006, 04h22   #7
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Citation:
Envoyé par Alexandre T
Depuis MySQL 4.1.2, il est possible de déclarer un TIMESTAMP avec en option ON UPDATE CURRENT_TIMESTAMP.
puré, dire que je me suis pris la tête pour rien . Tout n'est pas perdu j'aurais au moin appris un peut les triggers.
berceker united 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 04h31.


 
 
 
 
Partenaires

Hébergement Web