Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1186 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Ajout d'un trigger d'insertion

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ajout d'un trigger d'insertion

n°1462953
neo00neo
Posté le 23-10-2006 à 11:52:50  profilanswer
 

Bonjour,
mon problème est le suivant, j'ai deux tables.
J'insère dans une table A des données par exemple :
son identifiant, son nom, et l'identifiant du projet auquel il appartient.
 
Et j'aimerai créer un trigger, qui me permettrait pour chaque insertion dans cette table, d'insérer dans une nouvelle table B les informations suivantes :
l'identifiant du projet(le même que celui plus haut), et un nouveau nom.
 
Or ce nouveau nom est une variable PHP que je créé dans mon code et que je n'insère dans aucune table à part la B.
 
J'étais partie pour faire quelque chose de la sorte, mais je suis bloqué :
CREATE TRIGGER `ins_B` AFTER INSERT ON `A`
FOR EACH ROW
BEGIN
 INSERT INTO `B` (`id_projet`, `nouveau_nom`) VALUES (...Et là je ne sais pas quoi mettre...)
END;&
 
Merci de votre aide.
 
EDit : j'ai modifié de catégorie, désolé !


Message édité par neo00neo le 23-10-2006 à 13:35:10
mood
Publicité
Posté le 23-10-2006 à 11:52:50  profilanswer
 

n°1462969
sircam
I Like Trains
Posté le 23-10-2006 à 12:13:52  profilanswer
 

Mauvaise cat.
 
Ah oui, je saisis. PHP == SQL == MySQL. Comme d'hab. :jap:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1463006
neo00neo
Posté le 23-10-2006 à 13:35:29  profilanswer
 

Changement de catégorie, un peu d'aie s'il ovus plait ! Merci ! :)

n°1463084
MagicBuzz
Posté le 23-10-2006 à 15:06:42  profilanswer
 

"inserted.id_project" je suppose.
 
logiquement, le nom des deux tables virtuelles utilisables dans les triggers sont dans la doc.
 
généralement c'est INSERTED et DELETED, mais vu que ça ne fait pas partie de la norme SQL, chaque SGBD a choisi un nom différent, comme d'hab.

n°1463095
neo00neo
Posté le 23-10-2006 à 15:15:21  profilanswer
 

Merci MagicBuzz, mais il me manque une information, avec :
inserted.id_project
 
Je ne remplis qu'une colonne de ma table, seulement celle de id_project, mais pour nouveau_nom?
En gros en PHP nouveau_nom est de la forme $new_name... Donc change selon les fichiers.
Comment intégrer cela automatiquement dans mon trigger?

n°1463118
MagicBuzz
Posté le 23-10-2006 à 15:23:28  profilanswer
 

fouyaya...
 
toi faut vraiment que t'arrête de faire du php et que tu comprennes le SQL :p
 
ton "nouveau_nom" sera dans le champ "inserted.nouveau_nom"
 
"inserted", c'est une "table" virtuelle qui contient les données qui ont été reçues par la commande "insert". ainsi, tu retrouves dedans tout ce que tu as envoyé depuis le php.
chais pas comment expliquer ça plus clairement... :spamafote:

n°1463272
neo00neo
Posté le 23-10-2006 à 16:46:10  profilanswer
 

Je te remercie de ce rapide cours ! :)

n°1463455
moi23372
Posté le 23-10-2006 à 20:18:11  profilanswer
 

sous oracle c'est par exemple
 
:NEW et :OLD (update)
 
:NEW.monchamp par exemple...

n°1463675
MagicBuzz
Posté le 24-10-2006 à 02:30:59  profilanswer
 

merci, je me souvenais plus ce que c'était sous Oracle ;)
 
mais bon, inserted et deleted sont les plus courrants (SQL Server, PostGre et je crois même MySQL utilisent ces noms, qui sont plus parlants que new et old à mon goût)

n°1463884
neo00neo
Posté le 24-10-2006 à 11:19:39  profilanswer
 

Bien j'ai encore un soucis, voici ma requête, elle ne semble pas fonctionner :
CREATE TRIGGER `ins_A` AFTER INSERT ON `B`
FOR EACH ROW
BEGIN
  INSERT INTO `A` VALUES (inserted.version, inserted.databa_n);
END;
 
Cela ne marche pas, j'ai essayé de remplacer "inserted", par "new", et il me met comme message erreur : "Unknown column database_n in NEW"...
 
J'ai vu que :  
"Les mots clé OLD et NEW  vous permette d'accéder aux colonnes dans les lignes affectées par le déclencheur."
 
Ce que je ne vois pas c'est à quel moment on lui indique de prendre la valeur "database_n"... Vu qu'elle n'apparait dans aucune table à part A...
 
Seulement  
Merci de votre aide !


Message édité par neo00neo le 24-10-2006 à 11:55:01

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Ajout d'un trigger d'insertion

 

Sujets relatifs
Insertion d'un recordset entier dans une tableinsertion php dans bdd
Postgresql : Insertion par paquets[résolu][c#] ajout d un element à un tableau
[C# XmlDocument] Ajout d'un noeud d'un document dans un autre ...erreur sur trigger
[mysql] trigger lors d'une insertion...Trigger pour rattraper des erreurs sur des "alter table"
{resolu}[access] bloquer la fonction d'insertion dans un formulaire 
Plus de sujets relatifs à : Ajout d'un trigger d'insertion


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR