![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 20.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
chciałbym utworzyć trigger, który do specjalnie utworzonej tabeli będzie zapisywał wprowadzane zmiany w pewnym polu. Oto kod:
MySQL zwraca błąd: #1064 - Something is wrong in your syntax obok 'INSERT INTO tprzesylki(informacja) VALUES (CONCAT("przesylka nr ",tserwis.IdSer' w linii 6 Utworzona tabela do tego celu prezentuje się tak:
Będę wdzięczny za pomoc w rozwiązaniu tego problemu, ponieważ jest to moje pierwsze podjęcie działania na wyzwalaczach dlatego też proszę o wyrozumiałość ![]() Z góry dziękuję i pozdrawiam. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
http://dev.mysql.com/doc/refman/5.0/en/if-statement.html
Zobacz jak wygląda poprawny IF, jakie zawiera słowa kluczowe a jakich brakuje u Ciebie -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 20.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dodałem THEN lecz wątpię, aby o to Ci chodziło.
Teraz błąd jest: #1064 - Something is wrong in your syntax obok '' w linii 7 Coś źle z INSERTem albo CONCATem? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Dodałem THEN lecz wątpię, aby o to Ci chodziło. Inny bład? Inny. Więc o to chodziło.Mysql jako ciapków używa ' a nie " -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 20.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
#1064 - Something is wrong in your syntax obok '' w linii 7 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Chyba id przesyłki musisz pobrać inaczej niż `tserwis`.`IdSerwisSe`, bo to chyba ma być wartość ze starego rekordu, a nie ze wszystkich wierszy kolumny IdSerwisSe w tabeli tserwis.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Mnie to jeszcze zastanawia, że wszędzie dajesz średniki, nawet za ostatnim END. Ja zawsze musiałem ustawiać delimeter na np. $$ i ostatni END właśnie kończyłem tym $$
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 20.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Chyba id przesyłki musisz pobrać inaczej niż `tserwis`.`IdSerwisSe`, bo to chyba ma być wartość ze starego rekordu, a nie ze wszystkich wierszy kolumny IdSerwisSe w tabeli tserwis. No tak, to fakt. Ale jaki jest na to sposób? Bo faktycznie nie zwróciłem na to uwagi... Chciałbym zapisać w tej kolumnie informacja zlecenie nr [id zlecenia ktorego status sie zmienil] zmienilo status z old... na new... |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
-------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź proszę w manualu mySQL-a, czym jest OLD i NEW w trigger-ach.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 20.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nawet gdy chcę utworzyć inny, prostszy, wciąż zwracany jest ten sam błąd
#1064 - Something is wrong in your syntax obok '' w linii 9 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nadal nie zastosowałeś DELIMITER...
-------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 20.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Błąd zapytanie SQL: DELIMITER || CREATE TRIGGER zwrotyBEFORE UPDATE ON tserwis FOR EACH ROW BEGIN IF new.ZwrotDataSe != old.ZwrotDataSe OR ( old.ZwrotDataSe IS NULL OR old.ZwrotDataSe =0000 -00 -00 ) AND new.ZwrotDataSe IS NOT NULL THEN INSERT INTO tzwroty( informacja ) VALUES ( CONCAT( 'zlecenie zakonczono', COALESCE( new.ZwrotDataSe, 'NULL' ) ) ); END IF ; END || MySQL zwrócił komunikat: #1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Czyli co, mogę zapomnieć, że cokolwiek będzie działało jeśli chodzi o wyzwalacze? |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No w wyzwalaczu na tabeli X nie możesz pisać do tabeli X
edit down: no tak, nie przeczytałem za dokładnie komunikatu. No ale to co napisałem to chyba też jest prawdziwe
Powód edycji: [nospor]:
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
A nauczysz się czytać?
Jest napisane, że nie można podpiąć więcej niż 1 triggera pod tą samą tabelę pod to samo zdarzenie. To znaczy... że już jest jakiś trigger na tym zdarzeniu i musisz go najpierw usunąć. -------------------- |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 20.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Spokojnie człowieku, myślałem że tworzenie triggerów odbywa się w sposób transakcyjny - albo stworzy się cały albo wcale.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.07.2025 - 06:12 |