sql >> Databasteknik >  >> RDS >> PostgreSQL

SQLAlchemy deklarativ:definiera utlösare och index (Postgres 9)

Indikationer är enkla att skapa. För en kolumn med index=True parameter som nedan:

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

Men om du vill ha mer kontroll över namnet och alternativen, använd den explicita Index()-konstruktionen:

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

Triggers kan också skapas, men de måste fortfarande vara SQL -baserad och ansluten till DDL evenemang. Se Anpassa DDL för mer information, men koden kan se ut så här:

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'))

Sidenot:Jag vet inte hur jag konfigurerar tsvector datatyp:förtjänar en separat fråga.




  1. Ansluter till Postgresql i en dockningscontainer utifrån

  2. Ansluter till Informix (IDS12 DB) i IRI Workbench

  3. syntax för en rad MERGE / upsert i SQL Server

  4. Kan jag lagra bilder i MySQL