Erstellen Sie einen Trigger in einer gespeicherten MySQL-Prozedur
P粉197639753
P粉197639753 2024-02-25 19:35:21
0
1
449

Ich möchte dabei einen Auslöser schaffen. Nach einigen Recherchen stellte ich jedoch fest, dass dies nicht möglich ist. Können Sie mir einen anderen Weg vorschlagen, um Folgendes zu erreichen? (Aus irgendeinem Grund kann ich die genauen Daten und die Abfrage nicht weitergeben. Bitte beziehen Sie sich auf ähnliche Abfragen.)

Was will ich

Ich habe eine temporäre Tabelle mit den von mir benötigten Daten erstellt.

Zum Beispiel. CREATE TEMPORARY TABLE temp1 SELECT id, col_1 FROM table1 WHERE col_1=2;

Wenn Daten in temp1 eingefügt werden, möchte ich, dass sie in der Tabelle enthalten sind table2中插入数据,我可以通过创建TRIGGER来实现。但问题是我想在 table2 中给出一个值,该值将是动态的并且将从nodejs后端获取。所以我创建了一个 PROCEDURE ,它接受参数 neededId. Aber ich kann im Programm keinen Trigger erstellen. Gibt es eine andere Möglichkeit, dies zu erreichen?

Mein Entstehungsprozess

Hier neededId bekomme ich den Fremdschlüssel zum Einfügen aus dem 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

Antworte allen(1)
P粉217784586

SQL存储例程中不允许使用语句

允许的 SQL 语法在准备好的语句中

CREATE TRIGGER 未列出。


最后:触发器不能在存储过程、函数、预准备语句、触发器或事件过程中创建。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage