SQL
触发器循环插入到另一个表的解决方法,可以使用游标来实现。下面是一个示例代码:
-- 创建原始表
CREATE TABLE original_table (
id INT,
name VARCHAR(50)
-- 创建目标表
CREATE TABLE target_table (
id INT,
name VARCHAR(50)
-- 创建触发器
CREATE TRIGGER insert_trigger
AFTER INSERT ON original_table
FOR EACH ROW
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE cur_id INT;
DECLARE cur_name VARCHAR(50);
DECLARE cur CURSOR FOR SELECT id, name FROM original_table WHERE id = NEW.id;
-- 打开游标
OPEN cur;
-- 循环读取游标数据
read_loop: LOOP
-- 读取游标数据
FETCH cur INTO cur_id, cur_name;
-- 检查游标是否到达末尾
IF done THEN
LEAVE read_loop;
END IF;
-- 插入数据到目标表
INSERT INTO target_table (id, name) VALUES (cur_id, cur_name);
END LOOP;
-- 关闭游标
CLOSE cur;
上述代码创建了一个原始表 original_table
和一个目标表 target_table
,然后创建了一个触发器 insert_trigger
,该触发器在每次向 original_table
表插入数据后执行。
触发器中使用了一个游标 cur
,该游标查询与新插入数据相同 id
的所有数据。然后使用循环语句将查询结果逐条插入到目标表 target_table
。
请注意,这只是一个示例解决方案,实际使用时需要根据具体需求进行修改和优化。