Heim  >  Fragen und Antworten  >  Hauptteil

Erstellen Sie einen Trigger in einer gespeicherten MySQL-Prozedur

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粉197639753P粉197639753236 Tage vor411

Antworte allen(1)Ich werde antworten

  • P粉217784586

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

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

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

    CREATE TRIGGER 未列出。


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

    Antwort
    0
  • StornierenAntwort