sql >> Databáze >  >> RDS >> PostgreSQL

Deklarativní SQLAlchemy:definování spouštěčů a indexů (Postgres 9)

Indexy jsou přímočaré na vytvoření. Pro jeden sloupec s index=True parametr jako níže:

customer_code = Column(Unicode(15),unique=True,index=True)

Pokud však chcete mít větší kontrolu nad názvem a možnostmi, použijte explicitní konstrukci Index():

Index('customers_search_vector_indx', Customer.__table__.c.search_vector, postgresql_using='gin')

Spouštěče lze vytvořit také, ale ty musí být stále SQL -založené a připojené k DDL Události. Další informace naleznete v části Přizpůsobení DDL, ale kód může vypadat podobně jako tento:

from sqlalchemy import event, DDL
trig_ddl = DDL("""
    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);
""")
tbl = Customer.__table__
event.listen(tbl, 'after_create', trig_ddl.execute_if(dialect='postgresql'))

Sidenote:Nevím, jak nakonfigurovat tsvector datový typ:si zaslouží samostatnou otázku.




  1. 2 způsoby, jak vytvořit tabulku, pokud na serveru SQL neexistuje

  2. Jak změnit pořadové číslo databázového poštovního účtu v profilu v SQL Server (T-SQL)

  3. Postgresql vloží spoušť na nastavenou hodnotu

  4. Jak používat SUBSTRING() v MySQL