Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak zablokować zapis do tabeli MyISAM podczas UPDATE
Forum PHP.pl > Forum > Bazy danych > MySQL
itson
Jak zablokować zapis do tabeli MyISAM podczas UPDATE ?
prgTW
Trigger (wymagania administracyjnego uprawnienia "SUPER"):

  1. CREATE TRIGGER disable_update BEFORE UPDATE ON nazwa_tabeli
  2. FOR EACH ROW
  3. BEGIN SET NEW.kolumna1 = OLD.kolumna1;
  4. SET NEW.kolumna2 = OLD.kolumna2;
  5. ...
  6. END


(Wywołując tą komendę przez phpMyAdmin w okienku zapytania wybierz jako separator INNY ZNAK niż średnik exclamation.gif)

NEW - wiersz zawierający zmienione update'm dane
OLD - wiersz przed zmianami

Działanie:
Trigger (wyzwalacz) wywołuje się przed faktyczną zmianą danych w bazie poleceniem UPDATE ale po wywołaniu tego zapytania. W bazie będzie zapisany wiersz NEW zastępując stary wiersz OLD, więc wystarczy dane nowego wiersza przepisać ze starego i już - w efekcie nic w bazie się nie zmieni. Choć baza wykona UPDATE, to wykona go z takimi samymi danymi jakie już miała, niezależnie od tego się jakie dane poda się w samym zapytaniu UPDATE. Poleceniem SET wywołaj dla każdej kolumny która jest w tabeli, albo tylko dla tych kolumn które mają się nigdy nie zmienić.

Miej na uwadze, że po założeniu triggera edycja danych przez phpMyAdmina też nie będzie działać, bo trigger przywróci poprzednie wartości.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.