如何在静态 JS 方法中编写 Mysql 事务?

问题描述

我有一个执行 sql 语句的静态方法

static save(habit){
    return db.execute(
        'INSERT INTO habits (name,repeatVal,notification,color,question,id) VALUES (?,?,?)',[habit.name,habit.repeatVal,habit.notification,habit.color,habit.question,habit.id]
    );
}

我想做以下 sql 事务而不是这个 sql 语句(这包括现在的虚拟数据):

START TRANSACTION;
SELECT @habitId:=MAX(habits.habitId)+1 FROM habits;
INSERT INTO habits(habits.habitId,habits.name,habits.repeatVal,habits.notification,habits.color,habits.question,habits.id) VALUES(@habitId,'MysqL test',1,'#786578','backend hello world',14);
INSERT INTO habit_status(habit_status.habitId,habit_status.date,habit_status.status) VALUES(@habitId,"2021-04-01",0),(@habitId,0);
COMMIT;

执行此操作的正确语法是什么?

解决方法

几个选项:

  1. 尝试搜索之前是否有人问过:https://stackoverflow.com/search?q=javascript+include+transaction+

  2. 尝试编写一个可以完成这项工作的 stored procedure

您尝试了上述哪些选项?