Redshift: TRUNCATE TABLE, ЕСЛИ СУЩЕСТВУЕТ

Рекомендуется использовать TRUNCATE TABLE вместо DELETE, Однако усеченная таблица не поддерживает IF EXISTS пункт. Альтернативой является DROP TABLE и воссоздать, но нуждается в DDL. Есть ли способ сделать TRUNCATE TABLE если только таблица существует?

1 ответ

Решение

У вас есть два варианта для достижения этой цели:

Процедура SQL / Скрипт
С помощью IF условие, проверяя, существует ли таблица, затем только усекать вашу таблицу.

С простыми утверждениями SQL
использование Create стол с if not exists в комбинации с Truncate, это гарантирует, что таблица всегда существует, и ваши последовательные операторы SQL не выдают ошибки и не останавливаются.

CREATE TABLE @tobetruncated IF NOT EXISTS
TRUNCATE TABLE @tobetruncated

ПРИМЕЧАНИЕ. Это не относится к REDSHFIT, в основном применяется ко всем БД, если только он не поддерживает специальные функции (например, такую, как у Oracle TABLE_EXISTS_ACTION). Усечение похоже на операцию "все или ничего", и это делает его намного лучше по производительности, чем УДАЛЕНИЕ.

Другие вопросы по тегам