mirror of
https://github.com/jbranchaud/til
synced 2026-01-07 09:08:01 +00:00
Add Creating Conditional Constraints as a postgres til.
This commit is contained in:
@@ -128,6 +128,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
|
|||||||
- [Count Records By Type](postgres/count-records-by-type.md)
|
- [Count Records By Type](postgres/count-records-by-type.md)
|
||||||
- [Create A Composite Primary Key](postgres/create-a-composite-primary-key.md)
|
- [Create A Composite Primary Key](postgres/create-a-composite-primary-key.md)
|
||||||
- [Create hstore From Two Arrays](postgres/create-hstore-from-two-arrays.md)
|
- [Create hstore From Two Arrays](postgres/create-hstore-from-two-arrays.md)
|
||||||
|
- [Creating Conditional Constraints](postgres/creating-conditional-constraints.md)
|
||||||
- [Default Schema](postgres/default-schema.md)
|
- [Default Schema](postgres/default-schema.md)
|
||||||
- [Defining Arrays](postgres/defining-arrays.md)
|
- [Defining Arrays](postgres/defining-arrays.md)
|
||||||
- [Edit Existing Functions](postgres/edit-existing-functions.md)
|
- [Edit Existing Functions](postgres/edit-existing-functions.md)
|
||||||
|
|||||||
17
postgres/creating-conditional-constraints.md
Normal file
17
postgres/creating-conditional-constraints.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Creating Conditional Constraints
|
||||||
|
|
||||||
|
There are times when it doesn't make sense for a constraint to apply to all
|
||||||
|
records in a table. For instance, if we have a table of pokemon, we may only
|
||||||
|
want to apply a unique index constraint to the names of non-wild pokemon.
|
||||||
|
This can be achieved with the following conditional constraint:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
create unique index pokemons_names on pokemons (names)
|
||||||
|
where wild = false;
|
||||||
|
```
|
||||||
|
|
||||||
|
If we try to insert a non-wild pokemon with a duplicate name, we will get an
|
||||||
|
error. Likewise, if we try to update a pokemon with a duplicate name from
|
||||||
|
wild to non-wild, we will get an error.
|
||||||
|
|
||||||
|
[source](http://www.postgresguide.com/performance/conditional.html)
|
||||||
Reference in New Issue
Block a user