2017-12-11 11 views
1

Sequelizeで移行を作成して、camelCaseで列の名前を変更し、snake_caseに列を持つデータベースを作成したいとします。Sequelize - インデックスと制約付き列の名前変更

Sequelizeを使用して移行を作成し、移行を使用します。

しかし...私はmy_some_table_name_totoId_uindexという名前の、ユニークなこのコラム(totoId)上の制約と名前欄があり、私はこのコラム(totoId)にすぎインデ​​ックスを持っています。

一意の制約とインデックスを持つ列の名前を変更する方法を強制できますか?

答えて

0

すべての制約を削除し、列の名前を変更してから制約を追加し直す必要があります。

// 1) drop constraint 
queryInterface.removeConstraint('my_some_table', 'my_constraint'); 

// 2) rename column 
queryInterface.renameColumn('my_some_table', 'totoId', 'toto_id'); 

// 3) add constraint back 
queryInterface.addConstraint('my_some_table', ['toto_id'], { 
    type: 'unique', 
    name: 'my_constraint' 
}); 

は、移行はアトミック操作でなければならないことに注意してください:totoId上の単一の制約で、それは次のようになります。したがって、3つの移行をこの順序で作成する必要があります。

+0

私はSQLクエリを直接使用することはできません:/ –

+0

ここには開発者権限がないのでできません... –

+0

Ok、編集済みの回答。 –

関連する問題