EC-CUBE3の外部キー制約に立ち向かう方法

EC-CUBE3はORMを使っていることもあり外部キー制約がバリバリ使われています
それがいいことなのかどうなのかは今のところ恩恵を受けていないのでよくわかりませんがデメリットはとても感じています

MySQLの場合

外部キー制約を一時的に無効にしてしまえば、データの一括削除・投入がやりやすい

ついでに、MySQL5.6以降は色々めんどくさいので以下も追加しておくと楽ですね

PostgreSQLの場合


外部キー制約を無効にするにはスーパーユーザー権限がいるっぽいのでそういったことは出来なさそう
なので、外部キー制約に縛られたまま頑張ります。。。


とりあえず一括削除はこんなんで出来そう
$em->exec(‘TRUNCATE TABLE ‘ . $tableName . ‘ CASCADE;’);

追記


TRUNCATE TABLE ‘ . $tableName . ‘ CASCADE;
は影響範囲が読めなくてダメぽい、、、PostgreSQLの時はreplace使うしかないか・・・?

これで一時的に無効にすることが出来そう・・・?

How do I temporarily disable triggers in PostgreSQL? – Stack Overflow

疑問

せっかくDoctrine2を使っているのにこういう痒い部分には手が届かないんだろうか?
EC-CUBE3が痒いところに手が届くアプリケーションになっていくしかないのかな〜

この辺知らないと商品IDをリセット出来ないってのもなんだかなーと思う今日このごろなのでした

スポンサーリンク

シェアする

フォローする

コメントを残す

トップへ戻る