|
Отключение ограничений (constraints)
|
|||
---|---|---|---|
#18+
Всем привет У меня есть скрипты добавления данных в базу. Данные между собой консистентны, то есть соблюдены все связи FK -> PK. Проблема в том, что они идут вперемешку и возникает ошибка отсутствия первичного ключа, так как он еще не вставился. Как можно вставить данные, временно отключив ограничения? Делал Код: plsql 1.
Не помогло. Но, когда я на констреинте делаю Код: plsql 1.
То работает. Проблема в alter таблицы на уровне всей базы, он недопустим в моем случае. А все констреинты NOT DEFERRABLE. Можно как-то принудительно отключить проверки в сессии, не в базе? И чтобы после выполнения всех инсертов они включались и все проверялось? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2021, 21:05 |
|
Отключение ограничений (constraints)
|
|||
---|---|---|---|
#18+
Alexey Agafonov Можно как-то принудительно отключить проверки в сессии, не в базе? И чтобы после выполнения всех инсертов они включались и все проверялось? Нет. Вот без "и все проверялось" - возможно как раз на уровне сессии. У вас есть три варианта решения 1)set session_replication_role to 'replica'; - но тогда в этой сессии fk вообще не будет проверяться 2)глобально в базе раз и на всегда эти проблемные fk объявить deferrable 3)заливать данные в временные таблицы и уже из них запросами переливать в постоянные в нужной последовательности так чтобы не нарушались FK -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2021, 21:19 |
|
Отключение ограничений (constraints)
|
|||
---|---|---|---|
#18+
Maxim Boguk, заинтересовал первый вариант. Пусть в сессии ничего не будет проверяться, но можно потом вручную запустить эту проверку? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2021, 21:23 |
|
Отключение ограничений (constraints)
|
|||
---|---|---|---|
#18+
Alexey Agafonov Maxim Boguk, заинтересовал первый вариант. Пусть в сессии ничего не будет проверяться, но можно потом вручную запустить эту проверку? такого механизма нет... если зальете кривые данные они там и останутся. впрочем ничего вам не мешает руками все fk на валидность проверить после.... вопрос правда а что вы собираетесь делать если выявите нарушения -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2021, 22:22 |
|
|
start [/forum/topic.php?fid=53&msg=40049259&tid=1994169]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 257ms |
total: | 372ms |
0 / 0 |