Error Code: 1442. problem z triggerem |
Error Code: 1442. problem z triggerem |
25.02.2019, 22:53:08
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 ? |
|
|
26.02.2019, 06:53:41
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 837 Pomógł: 226 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
a czy istnieje już rekord z id = 1?
|
|
|
26.02.2019, 07:32:27
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. |
|
|
26.02.2019, 07:59:45
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
To co robisz może prowadzić do nieskończonej pętli wewnątrz zapytania. -------------------- |
|
|
26.02.2019, 09:51:07
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 |
|
|
26.02.2019, 10:00:26
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 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.
-------------------- |
|
|
26.02.2019, 10:26:30
Post
#7
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.07.2017 Ostrzeżenie: (0%) |
rozumiem, dzięki
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 20:39 |