recherche

Maison  >  Questions et réponses  >  le corps du texte

Créer un déclencheur dans une procédure stockée MySQL

Je souhaite créer un déclencheur dans le processus. Mais après quelques recherches, j'ai découvert que ce n'était pas possible. Pouvez-vous me suggérer une autre façon d’atteindre ce qui suit ? (Pour une raison quelconque, je ne peux pas partager les données et la requête exactes. Veuillez vous référer aux requêtes similaires.)

Qu'est-ce que je veux

J'ai créé une table temporaire contenant les données dont j'ai besoin.

Par exemple. CREATE TEMPORARY TABLE temp1 SELECT id, col_1 FROM table1 WHERE col_1=2;

Lorsque les données sont insérées dans temp1, je veux qu'elles soient dans le tableau table2中插入数据,我可以通过创建TRIGGER来实现。但问题是我想在 table2 中给出一个值,该值将是动态的并且将从nodejs后端获取。所以我创建了一个 PROCEDURE ,它接受参数 neededId. Mais je ne peux pas créer de déclencheur dans le programme. Existe-t-il un autre moyen d'y parvenir ?

Mon processus de création

C'est ici neededId que j'obtiens la clé étrangère à insérer depuis le backend

DELIMITER $$
USE `DB`$$
CREATE PROCEDURE `MyProcedure` (IN neededID int)
BEGIN
    DROP TABLE IF EXISTS temp1;
    CREATE TEMPORARY TABLE temp1 SELECT id, col_1 FROM table1 WHERE col_1=2;

    
    DROP TRIGGER IF EXISTS myTrigger;
    CREATE TRIGGER myTrigger AFTER INSERT ON temp1 FOR EACH ROW
    BEGIN
        INSERT into table2("value1", "value2", neededId);
    END;
    
END$$

DELIMITER ;

P粉197639753P粉197639753313 Il y a quelques jours484

répondre à tous(1)je répondrai

  • P粉217784586

    P粉2177845862024-02-26 15:06:24

    Les déclarations ne sont pas autorisées dans les routines stockées SQL

    Syntaxe SQL autorisée dans les instructions préparées

    CREATE TRIGGER Non répertorié.


    Enfin : les déclencheurs ne peuvent pas être créés dans des procédures stockées, des fonctions, des instructions préparées, des déclencheurs ou des procédures événementielles.

    répondre
    0
  • Annulerrépondre