首页 新闻 搜索 专区 学院

sql 批量插入并修改

0
悬赏园豆:5 [已解决问题] 解决于 2010-11-22 09:08

第一个问题:

  从一张表中查询结果插入另一张表,并修改第一张表的状态字段列,如果实现最好

第二个问题:

  对与数据批量操作,出了使用事务加循环,还用更好的方法吗

乔尼的主页 乔尼 | 初学一级 | 园豆:174
提问于:2010-11-09 11:12
< >
分享
最佳答案
0

事务解决的问题是数据同步(完整性),和批量插入没有直接关系

INSERT INTO Tbl1 (Col1,Col2) SELECT Col1,Col2 FORM tbl2 WHERE Status=0;

UPDATE tbl2 SET Status=1 WHERE Status = 0;

如上面语句,为了保证所有已插入到Tbl1里面的数据 在tbl2里面Status都=1

保证数据能够同步起来,即防止已经插入到 tbl1里面的数据和tbl2里面status仍=0的情况,所以需要事务的介入

begin tran

INSERT INTO Tbl1 (Col1,Col2) SELECT Col1,Col2 FORM tbl2 WHERE Status=0;

if @@error<>0

rollback

else

UPDATE tbl2 SET Status=1 WHERE Status = 0;

if @@error<>0

rollback

else

commit

收获园豆:5
LoujaDy | 小虾三级 |园豆:908 | 2010-11-09 12:30
当表1 的 status 状态为0 ,对其进行排序,取前 N 条记录,插入表2,并在表1中把这些已操作记录的状态status 列改为1 该怎样
乔尼 | 园豆:174 (初学一级) | 2010-11-09 14:07
其他回答(2)
0

第一个问题:

INSERT INTO Tbl1 (Col1,Col2) SELECT Col1,Col2 FORM tbl2 WHERE Status=0;

UPDATE tbl2 SET Status=1 WHERE Status = 0;
slokra | 园豆:264 (菜鸟二级) | 2010-11-09 11:19
0

(1)、使用select...into..子句

(2)、使用update tb set status=1 where id in(@id)

韩志峰 | 园豆:200 (初学一级) | 2010-11-09 14:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册