Créer un déclencheur dans une procédure stockée MySQL
P粉197639753
P粉197639753 2024-02-25 19:35:21
0
1
458

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粉197639753
P粉197639753

répondre à tous(1)
P粉217784586

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal