关于多表插入问题

向$看 2018-12-28 09:23:21
问题描述:
要求往2张关联表插入数据
例 表A(user) id name
表B user_id(user表外键) text
现在有1条查询语句查询了多条 表A,B2表相关 数据 user_id,user_name,text 但是 user_id 再A ,B 2个表都没有
想实现 插入A表的同时插入2表 用sql 怎么写呢
...全文
364 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
octwind 2018-12-29
  • 打赏
  • 举报
回复
把查询结果放到临时表里,然后分别将临时表的相关字段插入到A表和B表
二月十六 2018-12-29
  • 打赏
  • 举报
回复
现在有1条查询语句查询了多条 表A,B2表相关 数据 user_id,user_name,text 但是 user_id 再A ,B 2个表都没有

这句没看明白,用触发器可以使用吗?
向$看 2018-12-29
  • 打赏
  • 举报
回复
引用 9 楼 octwind 的回复:

#A:id,name  -- 假设A表id为自增型
#B:id,user_id,text  -- 假设B表id为自增型
#temp:username,text  -- 查出的临时数据表
drop procedure if exists procInsert;
DELIMITER $$
CREATE PROCEDURE procInsert()
BEGIN
	DECLARE t_error INTEGER;
	DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error = 1;
	START TRANSACTION;
	insert into A(name) select username from temp;
	insert into B(user_id, text) select A.id,t.text from temp t inner join A  on t.username = A.name;
	IF t_error = 1 THEN
		ROLLBACK;
	ELSE
		COMMIT;
	END IF;
END$$
DELIMITER ;

call procInsert();
谢谢亲: 有点思路了 但是我这个有点特殊 name 可以重复。。。这个不行 哈哈 我再研究一下
octwind 2018-12-29
  • 打赏
  • 举报
回复

#A:id,name -- 假设A表id为自增型
#B:id,user_id,text -- 假设B表id为自增型
#temp:username,text -- 查出的临时数据表
drop procedure if exists procInsert;
DELIMITER $$
CREATE PROCEDURE procInsert()
BEGIN
DECLARE t_error INTEGER;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error = 1;
START TRANSACTION;
insert into A(name) select username from temp;
insert into B(user_id, text) select A.id,t.text from temp t inner join A on t.username = A.name;
IF t_error = 1 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END$$
DELIMITER ;

call procInsert();
向$看 2018-12-29
  • 打赏
  • 举报
回复
引用 5 楼 二月十六 的回复:
现在有1条查询语句查询了多条 表A,B2表相关 数据 user_id,user_name,text 但是 user_id 再A ,B 2个表都没有 这句没看明白,用触发器可以使用吗?
下面那个表述 大神能看懂了吗 我看了下触发器 总感觉不适合 还是我不会用你说的那种触发器
向$看 2018-12-29
  • 打赏
  • 举报
回复
谢谢 各位 !可能我的描述不准确 我举个例子先 A表 有 2条数据 1(id) 张三(name) 2 李四 B表 有2条数据 1(id) 1(user_id) 这里是文章111111111(text) 2(id) 2(user_id) 这里是文章222222222(text) 现在给我些数据 是从另外几个表查出来的数据 你们可以当成临时表 数据 如下 王五 这里是文章333333333 李六 这里是文章444444444 要把这2条记录插入A.B两种表 要新增2个用户 的同时给他们加对应的文章
楓VS痕 2018-12-28
  • 打赏
  • 举报
回复
查询了多条 表A,B2表相关 数据 user_id,user_name,text,
这个查询的结果,你是打算通过程序处理后插入 表A和表B,还是直接 INSERT INTO SELECT?
向$看 2018-12-28
  • 打赏
  • 举报
回复
咋 连个人回复都没有! 求大神 指教 告诉个思路都行啊
  • 打赏
  • 举报
回复
现在有1条查询语句查询了多条 表A,B2表相关 数据 如果你查询出来的数据条数是固定的 那就先INSERT A表 再INSERT B表也没问题吧。 怕出问题,就在一个事务中完成。
向$看 2018-12-28
  • 打赏
  • 举报
回复
引用 2 楼 楓VS痕 的回复:
查询了多条 表A,B2表相关 数据 user_id,user_name,text, 这个查询的结果,你是打算通过程序处理后插入 表A和表B,还是直接 INSERT INTO SELECT?
我是想直接insert into 但是不会。。只能通过java处理for循环加了。。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧