mysql - sql:我需要帮助来找出查询

标签 mysql sql

我有三个 3 表(classes、module、module_classes),为简单起见,假设它们如下: 类表:

+-----+---------+----------+-----------+-----------+
| id  |  name   |  level   |  deleted  |create_time|
+-----|---------+----------|-----------+-----------+
|1    | C1      |4         | 1         |some date  |
|2    | C2      |2         | 0         |some date  |
|3    | C1      |1         | 0         |some date  | 
+-----+---------+----------+-----------+-----------+

模块表:

+-----+---------+----------+
| id  |  name   |  deleted |
+-----|---------+----------|
|1    | M1      |0         |
|2    | M2      |0         | 
|3    | M1      |0         |  
+-----+---------+----------+

模块类表:

+-----+---------+----------+
| id  | classId | moduleId |
+-----|---------+----------|
|1    | 1       |1         |
|2    | 2       |2         |
|3    | 1       |3         | 
+-----+---------+----------+

每学期等级增加一级,4个学期后类(class)将被设置为删除,并插入同名但等级1的新类(class),模块将保持不变,module_class中的类(class)ID必须是从删除的类更新到插入的类,所以它必须变成这样:

+-----+---------+----------+
| id  | classId | moduleId |
+-----|---------+----------|
|1    | 3       |1         |
|2    | 2       |2         |
|3    | 3       |3         | 
+-----+---------+----------+

我不知道如何实现这一点,有什么关于如何做到这一点的建议吗?提前致谢

最佳答案

尝试这个触发器

DROP TRIGGER IF EXISTS TRIGGER_class_UPDATE;
DELIMITER $$
CREATE TRIGGER TRIGGER_class_UPDATE BEFORE UPDATE ON class FOR EACH ROW BEGIN
   SET @moduleId= (SELECT moduleId FROM module_class WHERE class_id=old.id);
   IF NEW.level=4 THEN 
      SET NEW.deleted=1;
      INSERT INTO class(name,level,deleted,create_time) values (old.name,1,0,now());
        set @newclassid=(SELECT ID FROM class WHERE name=old.anem and deleted=0 and level=old.level);
       INSERT INTO module_class(classId,moduleId) values (@newclassid,@moduleId);
   ELSE
      SET NEW.deleted=0;
   END IF;
END$$ 
DELIMITER ;

https://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html

关于mysql - sql:我需要帮助来找出查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38036621/

相关文章:

MySQL:内存不足/MariaDB

mysql - ORDER BY 分组字段

mysql - 这是合法的 SQL 查询吗?

php - mysql php load data infile 语法错误

python - 当cursor.fetchall()时出现UnicodeDecodeError

mysql - 如何计算sql中列中值的数量百分比?

mysql - 在嵌套 sql 命令中查找值

mysql - H2 "runscript"命令将所有表名转为大写

sql - ISDATE 相当于 DB2

mysql - 使用聚合函数优化 MySQL View