我有很多刪除查詢,但在某些生產數據庫中找不到某個表。我需要簡單的決定這個問題。如果表存在,則從表中刪除記錄
查詢,如
DELETE b.* FROM `table` b
JOIN `another_table` u
ON u.key2 = b.key
WHERE u.key3 <> ?
我需要這樣的東西:
IF TABLE `table` EXISTS DELETE b.* FROM `table` b ...
我有很多刪除查詢,但在某些生產數據庫中找不到某個表。我需要簡單的決定這個問題。如果表存在,則從表中刪除記錄
查詢,如
DELETE b.* FROM `table` b
JOIN `another_table` u
ON u.key2 = b.key
WHERE u.key3 <> ?
我需要這樣的東西:
IF TABLE `table` EXISTS DELETE b.* FROM `table` b ...
如果你需要刪除表中的行,如果後者存在,你將不得不依賴於我認爲的自定義存儲過程。類似的東西:
-- Define the procedure
CREATE PROCEDURE delete_if_exists(IN tbl CHAR(80))
BEGIN
IF @tbl IN (select table_name from information_schema.tables where table_schema = "db_2_44afb7")
THEN
SET @query = CONCAT("DELETE FROM ", @tbl);
PREPARE stmt FROM @query;
EXECUTE stmt;
END IF;
END //
-- use it
CALL delete_if_exists("mytable");
CALL delete_if_exists("myothertable");
查看http://sqlfiddle.com/#!2/2ee190/3爲例。
當然,您可以調整"DELETE FROM",...
部件以符合您的特定需求。
您可以使用DROP前圍上表的SELECT查詢...
IF EXISTS(SELECT table.records FROM table WHERE ...)
DELETE records_names FROM ...
從什麼它聽起來像IF EXISTS(在這裏選擇查詢)在你的刪除命令是你要找的?我是一個postgresql人,所以請原諒SQL錯誤,如果他們存在。
更多示例在this post。
我不想刪除表。我只需要從表中刪除記錄 –