今天就讨论以下几个数据批量操作的问题
在一个批量操作的sql中,如果一个失败,其他的会怎么样呢对于大数据表,线上更新而不影响用户使用事务与锁的关系建立测试表member#MYSQL#表
表结构1.在一个批量操作的sql中,如果一个失败,其他的会怎么样呢
第一种情况:先看一下,多条语句没有事务控制的代码
$conn=Yii::$app-db1;
$sql1=insertintomember(name,password)values(yang,vincent);
$sql2=insertintomember(name,password,gender)values(yang,vincent1);
$conn-createCommand($sql1)-execute();
$conn-createCommand($sql2)-execute();
执行结果怎么呢,下面我们来看看,结果大家也猜得到,报错了
SQLSTATE[21S01]:Insertvaluelistdoesnotmatchcolumnlist:Columncountdoesntmatchvaluecountatrow.....
字段不匹配,但是,数据表第一条已经插入成功,只是第二条语句出错了!
第二种情况:多条语句,有事务控制
测试代码如下:
$conn=Yii::$app-db1;
$transaction=$conn-beginTransaction();
try{
$sql1=insertintomember(name,password)values(yang,vincent);
$sql2=insertintomember(name,password,gender)values(yang,vincent1);
$conn-createCommand($sql1)-execute();
$conn-createCommand($sql2)-execute(); //...executingotherSQLstatements...
$transaction-