xp-user
Goto Top

Create Trigger After Update MySQL

Hallo zusammen, ich versuche mich mit einem Trigger der mir bei einer speziellen Tabelle den Value automatisch wieder auf standard zurücksetzt.


CREATE TRIGGER tr_up_otpions_value
BEFORE UPDATE ON option_value FOR EACH ROW
BEGIN
IF (:old.option_value = 'https://mydomain.com') then
:new.option_value := 'https://mydomain.com';
end if;
end;


in der Tabelle asdlfkj_options gibt es die Zeile 1 und 2 mit option_id 1 und 2 die im Value (option_value) https://mydomain.com enthalten müssen.
Wenn diese überschrieben werden, dann soll der Trigger diesen automatisch auf https://mydomain.com zurückändern.
Dies soll aber eben nur in option_id 1 und option_id 2 erfolgen

Leider ergibt es einen Fehler:


#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei ':old.option_value = 'https://mydomain.com') then
:new.option_value := 'https...' in Zeile 4

Content-ID: 621175

Url: https://administrator.de/contentid/621175

Ausgedruckt am: 25.11.2024 um 10:11 Uhr

SachsenHessi
SachsenHessi 11.11.2020 um 15:16:54 Uhr
Goto Top
Hallo,
das sieht aber nach PL/SQL-Syntax (:old.feld) aus.
MS arbeitet da anders.
Schau mal nach
SlainteMhath
SlainteMhath 11.11.2020 um 16:05:34 Uhr
Goto Top
Moin,

Lösung steht doch da?
Bitte die korrekte Syntax im Handbuch nachschlagen
face-smile

lg,
Slainte

PS: Falls dein Google defekt ist: https://docs.microsoft.com/en-us/sql/t-sql/functions/update-trigger-func ...
xp-user
xp-user 11.11.2020 um 17:34:38 Uhr
Goto Top
danke, ich habe es nachgeschaut, aber bin leider nicht vom Fach sondern versuche das hinzukriegen.
Nach 4h habe ich mich dann an dieses Forum gewendet und ich schelm dachte, da krieg ich eine Lösung. face-smile
MadMax
MadMax 16.11.2020 um 14:29:27 Uhr
Goto Top
Hallo xp-user,

bissl spät, habe es eben erst gesehen. Du sollst nicht dumm sterben:
create trigger tr_up_otpions_value on asdlfkj_options for update as
begin
	if update (option_value)
	begin
		update	asdlfkj_options
		set	option_value = 'https://mydomain.com'  
		from	asdlfkj_options o
			join deleted d on d.option_id = o.option_id
		where	o.option_id in (1, 2) and
			o.option_value <> 'https://mydomain.com'  
	end
end

Gruß, Mad Max
xp-user
xp-user 17.11.2020 um 09:25:54 Uhr
Goto Top
Dankeschön, leider gibt mir das ebenfalls eine Fehlermeldung 1064
bildschirmfoto 2020-11-17 um 09.24.42
SlainteMhath
SlainteMhath 17.11.2020 um 11:31:51 Uhr
Goto Top
Evtl. stößt er sich an der 3 am Anfang des Tabellennamens. Setz die Namen mal in Anführungszeichen
xp-user
xp-user 17.11.2020 um 16:55:06 Uhr
Goto Top
leider ebenfalls eine Errormeldung. Sowohl mit " " als auch mit ' '
screen
MadMax
MadMax 17.11.2020 um 23:53:29 Uhr
Goto Top
Moin,

was ein fehlender Buchstabe nicht so alles ausmachen kann face-smile

Bei der Überschrift "Create Trigger After Update MSQL" haben hier alle an MSSQL gedacht, aber Du hast ja MySQL. Da paßt mein Trigger natürlich nicht. Und bei MySQL kann ich Dir auch nicht weiterhelfen, da kann ich auch nur auf das Handbuch verweisen, sorry.

Gruß, Mad Max
xp-user
xp-user 18.11.2020 um 09:43:28 Uhr
Goto Top
ich habe den Titel angepasst. Sorry für das Missverständnis dass dadurch resultierte.
Dennoch denke ich das es hier jemanden gibt, der soetwas schon mal unter MySQL gelöst hat.
SlainteMhath
SlainteMhath 18.11.2020 aktualisiert um 10:14:15 Uhr
Goto Top
...MySQL...

Ok, dann hätte das der TO mal dazuschreiben sollen .( Ok, bin auch raus.

/EDIT: Just RTFM! https://dev.mysql.com/doc/refman/8.0/en/create-trigger.html
xp-user
xp-user 20.11.2020 um 10:58:30 Uhr
Goto Top
Danke für den Link.

Eines soll noch erwähnt werden dürfen. Ich finde es befremdlich, wie ich in diesem Beitrag Antwort erhalten habe.
Dumm sterben und Read the Fucking Manual dienen nicht dem guten Ton in einem Forum.
Wer helfen will der darf gerne, soll es doch bitte unterlassen beleidigend zu sein.