2015-12-13 68 views
0

我使用的是CodeIgniter 3.0.3,剛剛開始實施遷移記錄here。由於我不熟悉這些遷移,因此我傾向於犯錯誤,並且在應用遷移時,我的數據庫處於不一致的狀態,在以前的遷移和新遷移之間的中間。Atomic Codeigniter遷移

是否有任何簡單的方法使遷移原子?所以無論他們是成功還是失敗,都沒有中間狀態。

回答

0

由於CI_Migration核心類是不可擴展的,似乎只有這樣,才能做到這一點(短替換整個類的)在你遷移到手動使用交易:

class Migration_Add_parent extends CI_Migration { 

    public function up() { 
     $this->db->trans_start(); 
     $this->db->query('ALTER TABLE people ADD COLUMN parent int;'); 
     $this->db->query('ALTER TABLE people ADD CONSTRAINT people_parent_fkey FOREIGN KEY (parent) REFERENCES people (id);'); 
     $this->db->trans_complete(); 
    } 

    public function down() { 
     $this->db->trans_start(); 
     $this->db->query('ALTER TABLE people DROP CONSTRAINT people_parent_fkey;'); 
     $this->db->query('ALTER TABLE people DROP COLUMN parent;'); 
     $this->db->trans_complete(); 
    } 
}