#postgresql #truncate #cascade
#postgresql #усекать #каскад
Вопрос:
возможно ли усечь таблицу, в которой есть ссылка на начальный ключ, без усечения дочерней таблицы?
Это должно быть возможно путем отключения и включения проверки начального ключа?
Но в моем случае имя ограничения начального ключа может быть динамическим или определено где-то еще, следовательно, я не знаю его во время выполнения?
возможно ли получить это имя, отключить его, усечь таблицу, а затем включить ее в одном запросе?
Если да, то как?
Комментарии:
1. Если вы отключите ограничение для зависимой таблицы, а затем усечете таблицу, на которую ссылается, вы не сможете повторно включить ограничение для зависимой таблицы. Если вы настаиваете на этом, тогда посмотрите на
information_schema
.2. Но если вы усекаете таблицу, вы больше не сможете включить внешний ключ, поскольку ссылки из дочерней таблицы на эту (усеченную) таблицу больше не действительны
3. Я в основном хочу очистить все строки для этой таблицы, и, к сожалению, я не могу этого сделать из-за ссылки на начальный ключ… Сама таблица является дочерней таблицей.. Я буду на другом шаге повторно вставлять строки, но для этого мне нужно их удалить..
4. Какой смысл удалять, а затем повторно вставлять те же данные? Это не изменяет состояние базы данных.
5. Я знаю, что это неэффективно, но это делается с тех пор, когда происходит обновление, все предыдущие записи также будут появляться снова, и, чтобы избежать двойной вставки, я снова вставляю все @Belayer