Je travaille avec wordpress et j'ai besoin de créer un déclencheur qui met à jour une table quand une autre est mise à jour. J'ai créé le déclencheur et elle a travaillé en théorie, mais elle ne fait que mettre à jour le premier enregistrement et mettre en pause son exécution. La variable utilisée pour stocker un select qui retourne serait l'un des identifiants séparés par des virgules.MySQL Trigger ne fonctionne pas très bien
Eq: Le select retourne quelque chose comme: 424532123212
et l'utiliser dans une mise à jour en mettant « dans ».
UPDATE wp_posts SET e.post_modified = date (NEW.modified_date) e.ID WHERE IN (@ids);
Et comme je l'ai dit à jour que le premier enregistrement dans ce cas serait 424
Je souhaite que quelqu'un me aider.
Voici le déclencheur:
CREATE TRIGGER triggerupdatedata AFTER UPDATE ON wp_ngg_gallery
FOR EACH ROW BEGIN
set @ids := (SELECT
GROUP_CONCAT(a.ID SEPARATOR ',')
FROM
wp_posts a, wp_postmeta b, wp_ngg_gallery c
WHERE
c.gid = OLD.gid
AND
a.ID = b.post_id
AND
b.meta_key = 'galeria_id'
AND
c.gid = (SELECT d.meta_value FROM wp_postmeta d WHERE d.post_id = a.ID AND d.meta_key = 'galeria_id')
);
UPDATE wp_posts e SET e.post_modified = date(NEW.modified_date) WHERE e.ID IN (@ids);
END;//
N'utilisez pas la syntaxe de jointure SQL '89 implicite. C'est un anti-pattern, utilisez plutôt une syntaxe de jointure explicite. – Johan
avez-vous vérifier quelles valeurs retournent par ** @ ids ** ..? – Chandresh