Ajout d'un trigger d'insertion - SQL/NoSQL - Programmation
Marsh Posté le 23-10-2006 à 12:13:52
Mauvaise cat.
Ah oui, je saisis. PHP == SQL == MySQL. Comme d'hab.
Marsh Posté le 23-10-2006 à 13:35:29
Changement de catégorie, un peu d'aie s'il ovus plait ! Merci !
Marsh Posté le 23-10-2006 à 15:06:42
"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.
Marsh Posté le 23-10-2006 à 15:15:21
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?
Marsh Posté le 23-10-2006 à 15:23:28
fouyaya...
toi faut vraiment que t'arrête de faire du php et que tu comprennes le SQL
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...
Marsh Posté le 23-10-2006 à 20:18:11
sous oracle c'est par exemple
:NEW et LD (update)
:NEW.monchamp par exemple...
Marsh Posté le 24-10-2006 à 02:30:59
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)
Marsh Posté le 24-10-2006 à 11:19:39
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 !
Marsh Posté le 23-10-2006 à 11:52:50
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