V tomto příspěvku SQL Server – 2016 – Klauzule vylepšení T-SQL „Drop if Exists“ jsme viděli novou funkci představenou ve verzi SQL Server 2016. Jeden z mých přátel nedávno zeptali se mě, jak zrušit tabulku, pokud existuje v databázi MySQL? Nebylo překvapivé, že o existenci této funkce neví mnoho lidí. MySQL již tuto funkci nějakou dobu má, a pokud jste MySQL DBA, může pro vás být zajímavé, že SQL Server právě tuto funkci zavedl.
Podívejme se nyní na tento příklad v akci. Nejprve vytvoříme vzorovou tabulku.
CREATE TABLE test(id INT,name VARCHAR(100));
Pokud musíme nad tabulkou klesnout, můžeme spustit následující skript a pustit jej.
DROP TABLE IF EXISTS test;
Výše uvedený skript zruší tabulku s názvem test, pokud existuje, jinak zobrazí varování, nikoli chybu. Je velmi důležité pochopit, že jelikož nezobrazuje chybu, můžeme varování v našem kódu snadno obejít. To je užitečné, pokud si nejste existencí tabulky předem jisti.
Nejen tabulky, ale MySQL má podobnou funkci k dispozici také pro uložené procedury. Podívejme se na rychlý příklad pro totéž.
Zde je skript, který můžete použít k vytvoření uložených procedur.
CREATE PROCEDURE test_proc AS BEGIN SELECT 1 AS number; END;
Po vytvoření výše uvedeného postupu jej můžete zahodit pomocí následujícího skriptu.
DROP PROCEDURE IF EXISTS test_proc;
Pamatujte si, že stejně jako tabulka zahodí uloženou proceduru, pokud existuje, jinak pouze vrátí varování. Je opravdu zajímavé vidět, že MySQL tuto funkci již nějakou dobu má, zatímco SQL Server tuto funkci představil teprve letos.