Postgresql усекает таблицу с начальными ключами? без каскадирования?

#postgresql #truncate #cascade

#postgresql #усекать #каскад

Вопрос:

возможно ли усечь таблицу, в которой есть ссылка на начальный ключ, без усечения дочерней таблицы?

Это должно быть возможно путем отключения и включения проверки начального ключа?

Но в моем случае имя ограничения начального ключа может быть динамическим или определено где-то еще, следовательно, я не знаю его во время выполнения?

возможно ли получить это имя, отключить его, усечь таблицу, а затем включить ее в одном запросе?

Если да, то как?

Комментарии:

1. Если вы отключите ограничение для зависимой таблицы, а затем усечете таблицу, на которую ссылается, вы не сможете повторно включить ограничение для зависимой таблицы. Если вы настаиваете на этом, тогда посмотрите на information_schema .

2. Но если вы усекаете таблицу, вы больше не сможете включить внешний ключ, поскольку ссылки из дочерней таблицы на эту (усеченную) таблицу больше не действительны

3. Я в основном хочу очистить все строки для этой таблицы, и, к сожалению, я не могу этого сделать из-за ссылки на начальный ключ… Сама таблица является дочерней таблицей.. Я буду на другом шаге повторно вставлять строки, но для этого мне нужно их удалить..

4. Какой смысл удалять, а затем повторно вставлять те же данные? Это не изменяет состояние базы данных.

5. Я знаю, что это неэффективно, но это делается с тех пор, когда происходит обновление, все предыдущие записи также будут появляться снова, и, чтобы избежать двойной вставки, я снова вставляю все @Belayer