찾다

 >  Q&A  >  본문

mysql 저장 프로시저에서 트리거 만들기

이 과정에서 트리거를 만들고 싶습니다. 그러나 몇 가지 조사를 한 후에 나는 이것이 불가능하다는 것을 발견했습니다. 다음을 달성하기 위한 다른 방법을 제안해 주실 수 있나요? (사정으로 인해 정확한 데이터와 쿼리를 공유할 수 없습니다. 유사한 쿼리를 참고해주세요.)

내가 원하는 것이 무엇인지

필요한 데이터가 포함된 임시 테이블을 만들었습니다.

예를 들어. CREATE TEMPORARY TABLE temp1 SELECT id, col_1 FROM table1 WHERE col_1=2;

temp1에 데이터가 삽입되면 테이블에 데이터가 들어가도록 하고 싶습니다 table2中插入数据,我可以通过创建TRIGGER来实现。但问题是我想在 table2 中给出一个值,该值将是动态的并且将从nodejs后端获取。所以我创建了一个 PROCEDURE ,它接受参数 neededId. 하지만 프로그램 내에서 트리거를 만들 수는 없습니다. 이것을 달성할 수 있는 다른 방법이 있나요?

나의 창작 과정

여기 neededId는 백엔드에서 삽입할 외래 키를 가져오는 곳입니다

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粉197639753268일 전454

모든 응답(1)나는 대답할 것이다

  • P粉217784586

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

    SQL 저장 루틴에서는 문이 허용되지 않습니다.

    준비된 문에서 허용되는 SQL 구문

    CREATE TRIGGER 목록에 없습니다.


    마지막으로, 저장 프로시저, 함수, 준비된 문, 트리거 또는 이벤트 프로시저 내에서는 트리거를 만들 수 없습니다.

    회신하다
    0
  • 취소회신하다