下記のように、数回に分けて1回のinsert文で複数のレコードを保存したいです。
(例えば、csvからのデータインポートを想定。)
INSERT INTO user values(4, 'test4'), (5, 'test5'), (6, 'test6');
cakePHPのsaveAll関数を使えばできそうですが、
この関数は都度commitをしているため、処理が失敗した場合のロールバックは
直前のループに対してしか有効ではありません。
(エラーとなったループ以外は、commitされてしまい、ロールバックできない)
$dbitem = $this->mymodel->getDataSource();
$dbitem->begin($this);
for(){
$update = array("xxxxx", "yyyyy", "zzzzz");
$this->mymodel->saveAll($update, array('atomic' => false);
}
エラーとなる前のデータを戻しつつ、バルクインサートとなる方法をご教示ください。
※現状は、
自分でクエリを作ってSQLを直接実行する方法を取ろうと思っています。
回答1件
あなたの回答
tips
プレビュー