|
Порядок срабатывания ограничений (очередной переход с оракла на пг)
|
|||
---|---|---|---|
#18+
Дня два назад начал пробовать сдублировать оракловую БД на ПГ, вроде все проблемы решаемы пока, но вот чего я не обнаружил - это собственно сабж. Ситуация следующая: - создаю домен dmn1 not null - создаю таблицу, в которой есть поле fld1 тип dmn1 - создаю триггер (функцию) before insert в которой есть if (new.fld1 is null then new.fld1 := val) Как следствие - при вставке ругается, что домен не может быть null. Если заменить поле на стандартный тип и поставить непосредственно на поле not null, то дело до триггера доходит и всё нормально вставляется. Подозреваю, что не одна такая заковырка может встретится на начальном пути. Как результат, пытаюсь найти какие то слова в доке (основное пока - с postgespro.ru) , книгах по сабж - не нахожу. Во решил перед НГ (не все ж праздники пить) общественность попросить подсказать, где про сие можно прочитать, чтобы не путём ошибок трудных идти. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 13:16 |
|
Порядок срабатывания ограничений (очередной переход с оракла на пг)
|
|||
---|---|---|---|
#18+
Можете привести команды, чтоб поиграться можно было. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 13:27 |
|
Порядок срабатывания ограничений (очередной переход с оракла на пг)
|
|||
---|---|---|---|
#18+
Guzya, если ничего не попутал, как то так это выглядит. Экспериментирую, меняю постоянно Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Код: 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.
Вставка стандартно (проверяю также подмену значений в тригере для прочих полей и генерацию ключа) Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 14:10 |
|
Порядок срабатывания ограничений (очередной переход с оракла на пг)
|
|||
---|---|---|---|
#18+
Guzya, А, и ключевые моменты (версия ПГ-12) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 14:15 |
|
Порядок срабатывания ограничений (очередной переход с оракла на пг)
|
|||
---|---|---|---|
#18+
Наверное не совсем то, но вопрос решается установкой default для поля Код: 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 15:02 |
|
Порядок срабатывания ограничений (очередной переход с оракла на пг)
|
|||
---|---|---|---|
#18+
AndreyDmt Дня два назад начал пробовать сдублировать оракловую БД на ПГ, вроде все проблемы решаемы пока, но вот чего я не обнаружил - это собственно сабж. Ситуация следующая: - создаю домен dmn1 not null Ограничение NOT NULL лучше накладывать на столбец таблицы, а не в самом домене. Посмотрите раздел Замечания в документации к команде CREATE DOMAIN. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 16:18 |
|
Порядок срабатывания ограничений (очередной переход с оракла на пг)
|
|||
---|---|---|---|
#18+
GuzyaНаверное не совсем то, но вопрос решается установкой default для поля Павел Лузанов Ограничение NOT NULL лучше накладывать на столбец таблицы, а не в самом домене. Посмотрите раздел Замечания в документации к команде CREATE DOMAIN. Эмпирически это я вычислил что ожидаемо работает, когда not null назначается на поле, а не на домен. А почему так, пока в голове не укладывается. Спасибо за ссылку на замечания в документации на домен - с первого прочтения каких то особенностей создания не обнаружил, но со второго захода в свете имеющейся проблемы чёт стало прояснятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2021, 06:39 |
|
|
start [/forum/topic.php?fid=53&msg=40123923&tid=1993726]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 409ms |
0 / 0 |