Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jak zablokować zapis do tabeli MyISAM podczas UPDATE
itson
post 30.10.2007, 21:33:40
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 3.01.2007

Ostrzeżenie: (0%)
-----


Jak zablokować zapis do tabeli MyISAM podczas UPDATE ?
Go to the top of the page
+Quote Post
prgTW
post 30.10.2007, 23:31:11
Post #2





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 10.09.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.

Ten post edytował prgTW 30.10.2007, 23:50:09


--------------------
Pozdrawiam
Tomasz Wójcik
..:: prgTW ::..
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 10.07.2025 - 08:23