mysql 저장 프로시저에서 트리거 만들기
P粉197639753
P粉197639753 2024-02-25 19:35:21
0
1
463

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

내가 원하는 것이 무엇인지

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

예를 들어. 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粉197639753
P粉197639753

모든 응답(1)
P粉217784586

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

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

CREATE TRIGGER 목록에 없습니다.


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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿