이 과정에서 트리거를 만들고 싶습니다. 그러나 몇 가지 조사를 한 후에 나는 이것이 불가능하다는 것을 발견했습니다. 다음을 달성하기 위한 다른 방법을 제안해 주실 수 있나요? (사정으로 인해 정확한 데이터와 쿼리를 공유할 수 없습니다. 유사한 쿼리를 참고해주세요.)
내가 원하는 것이 무엇인지
필요한 데이터가 포함된 임시 테이블을 만들었습니다.
예를 들어. 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 ;
SQL 저장 루틴에서는 문이 허용되지 않습니다.
준비된 문에서 허용되는 SQL 구문
CREATE TRIGGER
목록에 없습니다.마지막으로, 저장 프로시저, 함수, 준비된 문, 트리거 또는 이벤트 프로시저 내에서는 트리거를 만들 수 없습니다.