Может кто-нибудь сказать мне, если есть какая-либо разница между
DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]
Я спрашиваю об этом, потому что я использую шаблон JDBC в своем веб-приложении MVC. Если я использую DROP [TABLE_NAME]
ошибку сказал, что таблица существует. И если я использую DROP IF EXISTS [TABLE_NAME]
это говорит плохая грамматика SQL. Может кто-нибудь помочь?
sql
drop-table
Абдулазиз
источник
источник
Ответы:
Стандартный синтаксис SQL
IF EXISTS
не является стандартным; разные платформы могут поддерживать его с разным синтаксисом или вообще не поддерживать его. В PostgreSQL синтаксисПервый вызовет ошибку, если таблица не существует или если другие объекты базы данных зависят от нее. Чаще всего другие объекты базы данных будут ссылками на внешние ключи, но могут быть и другие. (Представления, например.) Вторая не выдаст ошибку, если таблица не существует, но все равно выдаст ошибку, если от нее зависят другие объекты базы данных.
Чтобы удалить таблицу и все другие объекты, которые от нее зависят, используйте один из них.
Используйте CASCADE с большой осторожностью.
источник
CASCADE
внутри блока транзакции (BEGIN
...COMMIT
). Таким образом, становится ясно, как база данных будет затронута перед тем, как вы, возможно, захотите скопить кучу данных, которые вы, возможно, не хотели.Это не то, что спрашивается напрямую. Но, глядя на то, как правильно делать отбрасывание таблиц, я наткнулся на этот вопрос, как и многие другие.
С SQL Server 2016+ вы можете использовать
Для SQL Server <2016 я делаю следующее для постоянной таблицы
Или это, для временного стола
источник
Вы забыли
table
в своем синтаксисе:который опускает стол.
С помощью
проверяет, существует ли таблица, прежде чем ее отбросить.
Если оно существует, оно отбрасывается.
В противном случае не будет выдано никакой ошибки и не будет предпринято никаких действий.
источник
сначала он проверяет, существует ли таблица, удаляет ли она
он удаляется без проверки, поэтому, если он не существует, он выходит с ошибкой
источник
Если таблица с таким именем не существует, происходит
DROP
сбой с ошибкой,DROP IF EXISTS
но ничего не происходит.Это полезно, если вы создаете / модифицируете свою базу данных с помощью скрипта; Таким образом, вам не нужно вручную проверять удаление предыдущих версий таблицы. Вы просто делаете это
DROP IF EXISTS
и забываете об этом.Конечно, ваш текущий движок БД может не поддерживать эту опцию, трудно сказать больше об ошибке с информацией, которую вы предоставляете.
источник
drop some_table if exists;
и таблицаsome_table
не существует.DROP
нужно, чтобы вы указали тип объекта (TABLE
в данном случае)