PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Deklaratif SQLAlchemy:mendefinisikan pemicu dan indeks (Postgres 9)

Indikasi lurus ke depan untuk membuat. Untuk kolom tunggal dengan index=True parameter seperti di bawah ini:

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

Tetapi jika Anda ingin lebih mengontrol nama dan opsi, gunakan konstruksi Index() eksplisit:

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

Pemicu dapat dibuat juga, tetapi itu harus tetap SQL -berbasis dan terhubung ke DDL acara. Lihat Menyesuaikan DDL untuk info lebih lanjut, tetapi kodenya mungkin terlihat seperti ini:

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

Catatan:Saya tidak tahu cara mengkonfigurasi tsvector tipe data:layak mendapat pertanyaan terpisah.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memperbaiki kesalahan ketidakcocokan versi pg_dump?

  2. Memetakan bidang titik geometri PostGIS dengan Hibernate pada Spring Boot

  3. Bagaimana cara mendapatkan akhir hari?

  4. Bagaimana saya bisa mencocokkan dua kata terakhir dalam sebuah kalimat di PostgreSQL?

  5. Kembalikan baris dari INSERT dengan ON CONFLICT tanpa perlu memperbarui