事务解决的问题是数据同步(完整性),和批量插入没有直接关系
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
第一个问题:
INSERT INTO Tbl1 (Col1,Col2) SELECT Col1,Col2 FORM tbl2 WHERE Status=0;
UPDATE tbl2 SET Status=1 WHERE Status = 0;
(1)、使用select...into..子句
(2)、使用update tb set status=1 where id in(@id)