![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
stworzyłem taki prosty trigger:
CREATE TRIGGER data_dodania BEFORE INSERT ON pracownik FOR EACH ROW update pracownik SET imie = "Jan"; kiedy probuję dodać rekord np INSERT INTO pracownik (id_pracownika) VALUES (1); otrzymuje komunikat: Error Code: 1442. Can't update table 'pracownik' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. o co chodzi ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
a czy istnieje już rekord z id = 1?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
CREATE TRIGGER data_dodania
after INSERT ON pracownik FOR EACH ROW update pracownik SET imie = "Jan"; i dodam id to taki sam komunikat się pojawia, Error Code: 1442. Can't update table 'pracownik' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
To co robisz może prowadzić do nieskończonej pętli wewnątrz zapytania. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
ok wiem o co chodzi z tymi new ale jak zrobić aby np. po aktualizacji jakiegoś rekordu, czy nawet dodaniu nowego rekordu, zmienić jakąś wartość w tablicy np. rekord którego id wynosi 3, który już jest w tablicy
DELIMITER | create TRIGGER zmieniaImie after update ON pracownik FOR EACH ROW BEGIN update pracownik SET imie="Ola" where id_pracownika=5; END; | DELIMITER ; takie coś nie działa, wyświetla się ten komunikat co w temacie |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie możesz tego zrobić w mysql, bo jak pisałem, możesz powodować nieskończone zapętlenie albo deadlock. Zawsze możesz drugie zapytanie wykonać albo, w zależności od potrzeb, napisać ifa który zrobić coś na podstawie przychodzących wartości.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.07.2017 Ostrzeżenie: (0%) ![]() ![]() |
rozumiem, dzięki (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 19:59 |