1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Temporarily Disable Triggers as a postgres til.

This commit is contained in:
jbranchaud
2015-06-23 08:43:40 -05:00
parent 03d6555531
commit 85d9cb22f4
2 changed files with 26 additions and 0 deletions

View File

@@ -61,6 +61,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
- [Generate Series Of Numbers](postgres/generate-series-of-numbers.md)
- [Limit Execution Time Of Statements](postgres/limit-execution-time-of-statements.md)
- [String Contains Another String](postgres/string-contains-another-string.md)
- [Temporarily Disable Triggers](postgres/temporarily-disable-triggers.md)
- [Timestamp Functions](postgres/timestamp-functions.md)
- [Toggling The Pager In PSQL](postgres/toggling-the-pager-in-psql.md)
- [Turning Timing On](postgres/turning-timing-on.md)

View File

@@ -0,0 +1,25 @@
# Temporarily Disable Triggers
In general, you are always going to want your triggers to fire. That's why
they are there. Though special circumstances may arise where you need to
temporarily disable them. Use
```sql
> set session_replication_role = 'replica';
SET
```
By changing the
[replication role](http://www.postgresql.org/docs/9.4/static/runtime-config-client.html#GUC-SESSION-REPLICATION-ROLE)
from `origin` to
`replica` you are essentially disabling all non-replica triggers across the
database (for that session). When you are done, you can simply set the
replication role back so that normal trigger behavior can resume
```sql
> set session_replication_role = 'origin';
SET
```
A more direct and fine-grained approach to disabling triggers is to use an
`alter table` command that targets a specific trigger.