テーブルのSQLAlchemyクラスに、そのテーブルのトリガーとインデックスを定義/作成する方法はありますか?
たとえば、私が次のような基本的なテーブルを持っていた場合...
class Customer(DeclarativeBase):
__tablename__ = 'customers'
customer_id = Column(Integer, primary_key=True,autoincrement=True)
customer_code = Column(Unicode(15),unique=True)
customer_name = Column(Unicode(100))
search_vector = Column(tsvector) ## *Not sure how do this yet either in sqlalchemy*.
「search_vector」を更新するトリガーを作成します
CREATE TRIGGER customers_search_vector_update BEFORE INSERT OR UPDATE
ON customers
FOR EACH ROW EXECUTE PROCEDURE
tsvector_update_trigger(search_vector,'pg_catalog.english',customer_code,customer_name);
次に、そのフィールドをインデックスとしても追加したかった...
create index customers_search_vector_indx ON customers USING gin(search_vector);
今のところ、アプリから何らかのデータベースの再生成を行った後、tsvector列の列の追加、トリガー定義、およびpsqlからのインデックスステートメントを実行する必要があります。世界の終わりではありませんが、一歩を忘れがちです。私はすべて自動化に取り組んでいるので、アプリのセットアップ中にこれをすべて実現できれば、ボーナスが得られます!