Удалить строку, если таблица существует SQL
У меня есть скрипт, который сбрасывает нагрузку таблиц с помощью DROP TABLE, если он существует, это работает.
в этом скрипте также есть delete для удаления строки из другой таблицы, которой я не управляю. Эта таблица может или не может существовать.Есть ли проверить существует таблица, прежде чем пытаться удалить строку?
Это должно работать для MYSQL и SQLServer
спасибо Алекс!--1-->
8 ответов
чтобы проверить SQL SERVER,
IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'TheSchema' AND TABLE_NAME = 'TheTable'))
BEGIN
--Do Stuff
END
чтобы проверить в mysql:
вы просто считаете:
SELECT COUNT(*)
FROM information_schema.tables
WHERE table_schema = '[database name]'
AND table_name = '[table name]';
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TABLE_NAME]') AND type in (N'U'))
Я не думаю, что вы найдете общий синтаксис между SQL server и моим SQL. Я имею в виду, вы можете проверить, если таблица exsits на SQL Server, используя что-то вроде:
if exists(select * from sys.objects where name like 'table_name')
но MySQL будет иметь свой собственный каталог.
Если вы не пишете сценарий, как:
if (sql_server) then
if exists(select * from sys.objects where name like 'table_name')
else --mySQl
--execute the mysql script
Мне кажется, что первый элемент в столбце "связанный" справа отвечает на ваш вопрос.... проверьте, существует ли таблица в SQL Server
Для MySQL
show tables like "test1";
для SQL Server
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'testSchema' AND TABLE_NAME = 'test1'
вопрос, который вы хотите задать себе (с точки зрения дизайна базы данных): почему вы пытаетесь удалить строки из таблицы, в существовании которой вы не уверены? Если это не так, но вы ожидаете, что это так, не лучше ли создать таблицу, чем не удалять ее?
в любом случае, Chris gesslers answer делает именно то, что вы спрашиваете в SQL Server, но здесь есть некоторый запах.
конструкция в MySQL вы можете использовать
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename'
и проверить результаты