![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 89 Pomógł: 5 Dołączył: 23.10.2006 Skąd: Gda?sk Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam dwie tabelki: - products - produkty (zawiera pole state, moze byc 0 - niekatywny i 1 - aktywny) - orders_products - tabelka mowi czy bylo zamowienie na dany produkt (zawiera dwa klucze obce product_id i order_id) Napisalem trigger, ktory przed proba usuniecia produktu sprawdza czy byl on kiedys zamawiany. Jesli byl to nie chce go usuwac tylko zmienic mu state na 0. mysql> delimiter | mysql> create trigger orders_products before delete on products -> for each row begin -> set @n = (select product_in_order(OLD.id)); -> if(@n != 0) then -> update products set state = 0 where id = OLD.id; -> else -> delete from products where id = OLD.id; -> end if; -> end; -> | Przy probie usuniecia produktu, ktory ma wpis w orders_products mysql mowi mi cos takiego: Can't update table 'products' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. Mam rozumiec ze taka akcja, ktora sobie wymyslilem jest absolutnie nie mozliwa?? Inna sprawa jest powiedzenie mysql, zeby nie wykonywal zapytania, ktore wywolalo trigger. Nie da sie tego zrobic zwracajac FALSE z triggera, podobno mozna zrobic to spejalnie umieszczajac bledne zapytanie (ktos ma jakies doswiadczenie w tym temacie??). Bede wdzeiczny za pomoc. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Na drugie pytanie Ci nie odpowiem, ponieważ nie miałem aż takiej styczności z MySQL 5. Co do pierwszego. W MySQL nie można wywołać triggera dla tabeli, która go uruchomiła. W każdym bądź razie nie spotkałem się z taką możliwością.
-------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 89 Pomógł: 5 Dołączył: 23.10.2006 Skąd: Gda?sk Ostrzeżenie: (0%) ![]() ![]() |
ech... szkoda... trzeba bedzie to jakos wrzucic w php-a
![]() wielkie dzieki za odpowiedz ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:51 |