Как я могу удалить все таблицы, имена которых начинаются с данной строки?
Я думаю, что это можно сделать с помощью некоторого динамического SQL и INFORMATION_SCHEMA
таблиц.
sql
sql-server
dynamic-sql
Blorgbeard отсутствует
источник
источник
close cmds; deallocate cmds
.Это сгенерирует скрипт.
Добавление условия для проверки существования таблицы перед удалением:
источник
WHERE TABLE_NAME LIKE 'em\_%' ESCAPE '\';
Это позволит вам получить таблицы в порядке внешнего ключа и избежать отбрасывания некоторых таблиц, созданных SQL Server.
t.Ordinal
Значение нарежьте таблицы в слои зависимостей.источник
На Oracle XE это работает:
Или, если вы хотите удалить ограничения и освободить место , используйте это:
Который будет генерировать кучу
DROP TABLE cascade constraints PURGE
утверждений ...Для
VIEWS
использования этого:источник
Я увидел этот пост, когда искал оператор mysql для удаления всех таблиц WordPress, основанный на @Xenph Ян, вот что я в итоге сделал:
это даст вам набор запросов на удаление для всех таблиц, начинающийся с wp_
источник
Вот мое решение:
И, конечно же, вам нужно заменить
TABLE_PREFIX_GOES_HERE
на ваш префикс.источник
Редактировать:
sp_MSforeachtable недокументирован, поэтому не подходит для работы, поскольку его поведение может варьироваться в зависимости от версии MS_SQL.
источник
источник
Ответ Зенфа Яна был намного чище, чем мой, но все равно мой.
Просто переключитесь
tableName
на символы, которые вы хотите найти.источник
Это сработало для меня.
источник
- Test - имя таблицы
источник
источник
Я подозреваю, что мне пришлось сделать небольшой вывод из ответа Зенфа Яна, потому что у меня были таблицы, не входящие в схему по умолчанию.
источник
В случае временных таблиц, вы можете попробовать
источник