2016-02-14 68 views
0

我想在一個學說遷移類來創建一個相當複雜的觸發:觸發教義遷移

https://github.com/2ndQuadrant/audit-trigger/blob/master/audit.sql

的第一個衝動就是隻把整個觸發代碼在一個大斑點,並將其添加

與:

public function up(Schema $schema) 
{ 
    $this->addSql($triggerSqlInABigBlob); 
} 

然而遷移失敗

SQLSTATE[42601]: Syntax error: 7 ERROR: cannot insert multiple commands into a prepared statement 

這甚至有可能管理在學說遷移嗎?有沒有一種解決方法/最佳做法來做到這一點?

回答

2

addSql在Doctrine的AbstractMigration需要一個SQL命令或多個SQL命令的數組。你發送的是一個包含多個SQL命令的字符串,這是不允許的。你可以試試這個:

public function up(Schema $schema) 
{ 
    $this->addSql(explode(';',$triggerSqlInABigBlob)); 
} 

這應該將字符串轉換成一個數組,其中每個元素是一個SQL命令。但評論可能會有問題。