如何在更新 MySQL 中的第三个表时将多个记录从一个表插入另一个表

迪迪姆斯

我在 MySQL 中开发逻辑有困难。我不知道如何在更新后从表中插入多条记录。

CREATE TABLE primeira(
ID int PRIMARY KEY AUTO_INCREMENT, 
nome varchar(30) NOT NULL,
valor int DEFAULT 0
);

CREATE TABLE segunda(
ID int PRIMARY KEY AUTO_INCREMENT,
ID_primeira int,
ultimo_valor int DEFAULT 0,
credito int NOT NULL,
limite int DEFAULT 0,
FOREIGN KEY(ID_primeira) references primeira(ID)
);

CREATE TABLE terceira(
ID int PRIMARY KEY AUTO_INCREMENT,
ID_segunda int,
`data` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
estado boolean DEFAULT false,
FOREIGN KEY(ID_segunda) references segunda(ID)
);

CREATE TRIGGER tr_segundaLimite_INS
BEFORE INSERT ON segunda FOR EACH ROW
SET NEW.limite = New.ultimo_valor + New.credito;

DELIMITER //
CREATE TRIGGER tr_primeira_UPD 
AFTER UPDATE ON primeira FOR EACH ROW      
   IF (SELECT limite FROM segunda WHERE segunda.ID_primeira = New.ID AND 
       (limite - NEW.valor)< 50) THEN
        INSERT INTO terceira(ID_segunda)            
        VALUES ((SELECT ID FROM segunda WHERE segunda.ID_primeira = New.ID 
        AND (limite - NEW.valor)< 50));
   END IF;
END
//
DELIMITER ;

我将使用带有函数的过程来选择数据。这个 TRIGGER 的问题是当有多个匹配的记录时它不起作用。

我得到的错误是-

subquery returns more than 1 row.

目标是:更新 后primeira.valor,触发器将减去segunda.limite - New.valor如果该差是<50,那么所有的匹配segunda.ID将在被登记terceira.ID_segundaterceira表中。

我正在使用以下数据:

INSERT INTO primeira(nome,valor)
VALUES 
('Burro',800),
('Chiconizio',300),
('Xerosque',400),
('Shrek',600);

INSERT INTO segunda(ID_primeira,ultimo_valor,credito)
VALUES 
(1,600,800),
(1,700,400),
(1,800,500),
(2,150,200),
(2,200,180),
(2,250,300);

UPDATE primeira 
SET Valor = 330
WHERE ID = 2;
凯尔潘查尔

你需要CURSOR这个。您可以尝试以下触发代码。我希望这会解决您的问题。

DELIMITER //
CREATE TRIGGER tr_primeira_UPD 
AFTER UPDATE ON primeira FOR EACH ROW
  BEGIN
   DECLARE v_limite_diff INT;
   DECLARE v_seg_id INT;
   DECLARE done INT DEFAULT FALSE;
   DECLARE c1 CURSOR FOR SELECT (s.limite - NEW.valor), s.id
     FROM segunda s WHERE s.ID_primeira = New.ID;
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

   OPEN c1; 
   my_loop: LOOP
     FETCH c1 INTO v_limite_diff, v_seg_id;
     IF done THEN
       LEAVE my_loop;
     END IF;
     IF( v_limite_diff < 50 ) THEN
       INSERT INTO terceira(ID_segunda) VALUES(v_seg_id);
     END IF;
   END LOOP;
END//
DELIMITER ;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将所有mysql记录从一个表更新到另一个表

来自分类Dev

如何在C#中使用其他参数将值从一个表插入mysql中的另一个表

来自分类Dev

如何在MySQL中将数据从一个表替换和更新到另一个表

来自分类Dev

如何在MySQL中将数据从一个表替换和更新到另一个表

来自分类Dev

如何在 MySQL 中将每个表的插入或更新镜像到另一个表?

来自分类Dev

如何将数据从一个表插入和检索到mysql数据库中的另一个表

来自分类Dev

如何基于另一个表的结果在MySQL中循环插入记录

来自分类Dev

创建MySQL触发器以更新另一个表中的多个记录

来自分类Dev

如何在MySQL中将一个表中的行插入到另一个表中

来自分类Dev

插入另一个MySQL后更新表

来自分类Dev

如何在一个表中将NEW值与另一个表中的值添加到第三个表中?

来自分类Dev

MySQL:从一个表中获取最新的更新ID并将其插入另一个表中

来自分类Dev

如何获取一个MySql表而不是另一个MySql表中存在的记录

来自分类Dev

根据另一个表中的值更新表中的所有行,而另一个表中的值则从第三个表中获取多个值

来自分类Dev

mysql更新另一个表中的列

来自分类Dev

MySQL:如果另一个表中的值为 NULL,如何将值插入到表中?

来自分类Dev

如何将另一个表中的值插入到表中 - mysql 内连接

来自分类Dev

如何在MySQL中使用另一个表逐行更新表

来自分类Dev

如何使用join根据另一个表更新mysql中的多个值

来自分类Dev

使用MySQL中的rand()将表中的值更新到另一个表

来自分类Dev

如何从一个表中获取价值和另一个值的阵列中的一个MySQL查询联接表?

来自分类Dev

从一个表中检索数据并在另一表中插入/更新mysql

来自分类Dev

Mysql如何在只有一个ID的多个表的三个表上进行联接查询

来自分类Dev

如何在php中插入mysql的自增字段id并将一个表的id更新到另一个?

来自分类Dev

如何将一个表中的最新行连接到另一个表MYSQL

来自分类Dev

MySQL触发器在更新后将新行插入另一个表

来自分类Dev

如何根据日期条件(PHP-MySQL-Query)将一个表中的多行插入另一个表?

来自分类Dev

如何创建一个 MySQL 触发器,用于在插入或更新后使用另一个表中字段的数据更新表的总和

来自分类Dev

MySQL如何根据另一个表中的值更新一个表中的字段

Related 相关文章

  1. 1

    将所有mysql记录从一个表更新到另一个表

  2. 2

    如何在C#中使用其他参数将值从一个表插入mysql中的另一个表

  3. 3

    如何在MySQL中将数据从一个表替换和更新到另一个表

  4. 4

    如何在MySQL中将数据从一个表替换和更新到另一个表

  5. 5

    如何在 MySQL 中将每个表的插入或更新镜像到另一个表?

  6. 6

    如何将数据从一个表插入和检索到mysql数据库中的另一个表

  7. 7

    如何基于另一个表的结果在MySQL中循环插入记录

  8. 8

    创建MySQL触发器以更新另一个表中的多个记录

  9. 9

    如何在MySQL中将一个表中的行插入到另一个表中

  10. 10

    插入另一个MySQL后更新表

  11. 11

    如何在一个表中将NEW值与另一个表中的值添加到第三个表中?

  12. 12

    MySQL:从一个表中获取最新的更新ID并将其插入另一个表中

  13. 13

    如何获取一个MySql表而不是另一个MySql表中存在的记录

  14. 14

    根据另一个表中的值更新表中的所有行,而另一个表中的值则从第三个表中获取多个值

  15. 15

    mysql更新另一个表中的列

  16. 16

    MySQL:如果另一个表中的值为 NULL,如何将值插入到表中?

  17. 17

    如何将另一个表中的值插入到表中 - mysql 内连接

  18. 18

    如何在MySQL中使用另一个表逐行更新表

  19. 19

    如何使用join根据另一个表更新mysql中的多个值

  20. 20

    使用MySQL中的rand()将表中的值更新到另一个表

  21. 21

    如何从一个表中获取价值和另一个值的阵列中的一个MySQL查询联接表?

  22. 22

    从一个表中检索数据并在另一表中插入/更新mysql

  23. 23

    Mysql如何在只有一个ID的多个表的三个表上进行联接查询

  24. 24

    如何在php中插入mysql的自增字段id并将一个表的id更新到另一个?

  25. 25

    如何将一个表中的最新行连接到另一个表MYSQL

  26. 26

    MySQL触发器在更新后将新行插入另一个表

  27. 27

    如何根据日期条件(PHP-MySQL-Query)将一个表中的多行插入另一个表?

  28. 28

    如何创建一个 MySQL 触发器,用于在插入或更新后使用另一个表中字段的数据更新表的总和

  29. 29

    MySQL如何根据另一个表中的值更新一个表中的字段

热门标签

归档