IF NOT EXISTS w MySQL

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

IF NOT EXISTS to klauzula używana w poleceniach tworzących obiekty w MySQL. Jej zadaniem jest zabezpieczenie instrukcji przed błędem w sytuacji, gdy dany obiekt już istnieje.

W pytaniu egzaminacyjnym chodzi o utworzenie użytkownika tylko wtedy, gdy konto jeszcze nie istnieje.

Przykład z CREATE USER

CREATE USER IF NOT EXISTS 'anna'@'localhost' IDENTIFIED BY 'haslo';

Instrukcja oznacza: utwórz użytkownika anna łączącego się z localhost, ale tylko wtedy, gdy taki użytkownik jeszcze nie istnieje.

Co daje IF NOT EXISTS?

  • zapobiega błędowi przy ponownym wykonaniu skryptu,
  • nie usuwa istniejącego użytkownika,
  • nie nadpisuje hasła istniejącego konta,
  • zwiększa bezpieczeństwo skryptów administracyjnych.

Gdzie jeszcze występuje?

Klauzula IF NOT EXISTS jest stosowana także przy innych instrukcjach, np.:

CREATE DATABASE IF NOT EXISTS sklep;
CREATE TABLE IF NOT EXISTS klienci (
  id INT PRIMARY KEY
);

Ważne na egzaminie

Poprawna kolejność w MySQL to:

CREATE USER IF NOT EXISTS 'uzytkownik'@'host' IDENTIFIED BY 'haslo';

Nie należy mylić tego z konstrukcjami typu CREATE OR REPLACE USER albo CREATE USER OR DROP, które nie są poprawną odpowiedzią w tym kontekście egzaminacyjnym.