Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> mysql, trigger, before delete, update na tej samej tabelce??
abusiek
post
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.
Go to the top of the page
+Quote Post
batman
post
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.
Go to the top of the page
+Quote Post
abusiek
post
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 winksmiley.jpg

wielkie dzieki za odpowiedz smile.gif
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 Aktualny czas: 21.08.2025 - 12:51