【不解】关于事务

huaxiaoxi 2007-06-26 09:31:59
简言之 A表 全部数据插入到B表,假设结构一样
select * from A 的结果集 插入到B表
我是应该取得两个conn 一个专门做select操作 一个专门用事务控制 insert操作呢
还是就一个conn 同时select,insert呢
虽然两者好像都行 但是在复杂的情况下 有什么说道吗
还有就是效率和安全性有什么说法吗
...全文
393 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiyuan1999 2007-11-06
  • 打赏
  • 举报
回复
你就是变相倒分

很聪明啊

恶心的人
wipe_tear 2007-09-27
  • 打赏
  • 举报
回复
用一个conn就行
insert的话最好综合一下,做个批处理还是比较好的
supermanyan10 2007-08-03
  • 打赏
  • 举报
回复
我觉得哦
一个一个插的话,效率可能低一点,但是万一出错知道错在哪里
而后面一个效率高一点,但是出错了,都不知道哪条错的……
huaxiaoxi 2007-08-03
  • 打赏
  • 举报
回复
看了上面的回答主要有两派,
一派是要一个一个的插入
一派是就是insert into xxx (select * from table)

到底那个效率高呢 有没有什么说法
Blueion 2007-06-28
  • 打赏
  • 举报
回复
select出来的记录一定要一条一条的insert,所以你需要写一个存储过程来完成这个过程。
tdy1234 2007-06-27
  • 打赏
  • 举报
回复
你的方法 通过前台再次插入 效率低,安全性也不好。最好定义一个函数 函数主体就是上面那个程序段
tdy1234 2007-06-27
  • 打赏
  • 举报
回复
用游标好了
这样处理 定义一个程序段
DECLARE
CURSOR C1 IS
SELECT * FROM table
vrow table%rowtype
BEGIN
OPEN C1;

WHILE C1 %FOUND LOOP
insert into table1 values(vrow.s1,vrow,s2......)

END LOOP;
CLOSE C1;
END;
ever_li 2007-06-27
  • 打赏
  • 举报
回复
应该没有必要用两个阿,又不是两个DB?你的事务会滚其实就是指insert的操作。
至于效率来说肯定是直接在数据库侧做inster into xxxx values (select ....from....) 这样的效率高,
huaxiaoxi 2007-06-27
  • 打赏
  • 举报
回复
顶 hoho
huaxiaoxi 2007-06-26
  • 打赏
  • 举报
回复
说的详细点好吗
还有我的意思其实是 select * from A 放在RS中
然后while(rs) 在插入 呵呵
Blueion 2007-06-26
  • 打赏
  • 举报
回复
如果用的是oracle,进行insert的时候,最好不要直接使用insert into ... select * from ...这样的语句,因为oracle的回滚段(rollback)会保存数据库变化的数据,如果一条语句执行的记录条数很多,会严重影响效率。所以最好采用游标将记录一条条的insert,并commit。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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