cakephp1.3+Mysql5 deleteAllはやっぱりauto_incrementを初期化してくれない件

単純に、テーブルの中身を全部消したい場合以下のようにします。

	//(引数はこのように設定しないとダメ)
	$this->Model->deleteAll('1 = 1', false);

なるほど、これで全部消えますがauto_increment属性のキー項目が残念ながら初期化されません。
(insertを実行した場合、1から始まるではなく中途半端な数字から始まります)



そこで、auto_incrementを初期化するため下記のようにしました。

	//(引数はこのように設定しないとダメ)
	$this->Model->deleteAll('1 = 1', false);
	$sql = "ALTER TABLE Models AUTO_INCREMENT = 1";
	$execQuery = $this->Model->query($sql);


これで次回インサート時にもauto_incrementは1からはじまるようになりました。







でも、いちいち実行後にalterするのがめんどくさい!
というのであれば、下記のようにすればいいのかもです。


●1

	//(今度は第3引数【コールバック関数有無】を有にする】)
	$this->Model->deleteAll('1 = 1', false, true);


●2
と、もうひとつ、コールバック関数に下記のとおり設定します。
(cake/libs/model/app_model.php

class AppModel extends Model {

	function afterDelete(){
	
		$sql = "ALTER TABLE ".$this->useTable." AUTO_INCREMENT = 1";
		$execQuery = $this->query($sql);
		//print_r($this);
	}

}


これで、どのテーブルを消しても常にauto_incrementは初期化されるようになります。








と、ここまで書いておいてなんですがトランザクションとか関係ねーYO!っていうなら
$sql = "TRUNCATE TABLE テーブル名";
$execQuery = $this->Model->query($sql);


が一番高速で楽なんでしょうねぇ。
以上、念のために色々メモっておきました。