Multiple Database Support¶
django-pgtrigger installs model triggers based on the
db_for_write return value in the database routers for multi-database
setups.
See these docs
for more information on db_for_write. By default, db_for_write
returns the default database, meaning triggers are always installed on the
default database.
This behavior means that model triggers will only be installed on the write database for configured models. All management commands and functions operate in a similar fashion.
If your Django application uses sharding or a database setup that involves
multiple write databases for a single model, your application may experience
undesired trigger behavior. If this is your case, please open an issue on
the project. django-pgtrigger can be extended to install triggers
across all migrated databases, however, this feature was pushed back in
favor of it working with basic multi-database setups.
django-pgtrigger installs triggers after migrations unless
the PGTRIGGER_INSTALL_ON_MIGRATE setting is False. Similar to
Django’s migrate command, only the default database has triggers installed
unless the migrate command is supplied with a --database argument.
If database routers change their respective write configurations,
django-pgtrigger will uninstall any orphaned triggers and reinstall
them on the new table on the next installation of triggers.
Note
All management commands and core functions take an optional database
argument to only run over a single database. Otherwise all commands run
over all databases.