1

ドクトリン移行クラスでかなり複雑なトリガーを作成しようとしています:

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

最初の衝動は、トリガー コード全体を 1 つの大きな塊に入れて追加することでした。

と:

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

ただし、移行は失敗します

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

これは教義の移行で管理することさえ可能ですか? これを行うための回避策/ベストプラクティスはありますか?

4

1 に答える 1

1

addSqlDoctrineAbstractMigrationでは、1 つの SQL コマンドまたは複数の SQL コマンドの配列が必要です。送信するのは、許可されていない複数の SQL コマンドを含む文字列です。これを試すことができます:

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

これにより、文字列が、各要素が 1 つの SQL コマンドである配列に変換されます。ただし、コメントは問題になる可能性があります。

于 2016-02-15T13:00:15.387 に答える