|
Partial Unique defferable
|
|||
---|---|---|---|
#18+
Как, сделать подобную штуку Допустим есть таблица CREATE TABLE public.tree123 ( id uuid NOT NULL, parent uuid, "order" integer NOT NULL, CONSTRAINT tree123_pkey PRIMARY KEY (id), CONSTRAINT tree123_check_parent FOREIGN KEY (parent) REFERENCES public.tree123 (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION ) Вопрос: Как сделать уникальный "order" в пределах одного родителя(parent ) ? Если я пишу так, всё работает, но только если parent не null Код: plsql 1.
Если parent == null, то данный констрейнт не работает - погуглил нашел что можно сделать partial index Код: plsql 1. 2. 3. 4. 5.
Но его нельзя сделать DEFERRABLE. Соответсвенно когда мне нужно сделать так Код: plsql 1. 2. 3. 4. 5. 6.
это работает, а так нет : Код: plsql 1. 2. 3. 4. 5. 6.
PS PSQL 9.6 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 18:24 |
|
Partial Unique defferable
|
|||
---|---|---|---|
#18+
проверьте, сейчас сочинил exclude ((coalesce(parent, uuid_nil())) with =, "order" with =) deferrable Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 13:56 |
|
|
start [/forum/search_topic.php?author=%D1%80%D0%B0%D0%B4%D1%8F&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 443ms |
total: | 599ms |
0 / 0 |