Trigger erstellen

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 19997
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 53 Mal
Danksagung erhalten: 29 Mal

Trigger erstellen

Beitrag von Manfred »

Hi,
ich stelle gerade ein paar Versuche an und komme da nicht so recht weiter. Ich erstelle ein DD mit ADT Tabellen und möchte natürlich direkt auch eine UID automatisch vergeben, wenn ein neuer Satz erfasst wird. Joachims Video vom Treffen in 2016 hilft mir da leider nicht weiter. Wie bekomme ich einen Trigger erstellt, wenn ich alles händisch über den Architekten anlege?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kannste sein, Hauptsache pfiffig!!
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 437
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Trigger erstellen

Beitrag von nightcrawler »

am besten über SQL:

Code: Alles auswählen

create trigger trig_ins on [meine Tabelle] INSTEAD OF INSERT
begin
  UPDATE __new SET [ID Feld]=newid() WHERE [ID Feld] is null;
  INSERT INTO [meine Tabelle] SELECT * FROM __new;
end;
ansonsten auf die Tabelle im Dictionary (Architect Database repository) mit der rechten Maustaste --> Triggers.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 19997
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 53 Mal
Danksagung erhalten: 29 Mal

Re: Trigger erstellen

Beitrag von Manfred »

so habe ich das gemacht.
jetzt kommt folgender Hinweis.
poQuery: Error 7200: AQE Error: State = HY000; NativeError = 5181; [SAP][Advantage SQL Engine][ASA] Error 5181: Trigger creation failed. An INSTEAD OF trigger of this type already exists.
Ich kann aber nichts finden, wo er abgelegt sein sollte. Was mache ich falsch?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kannste sein, Hauptsache pfiffig!!
Benutzeravatar
Marcus Herz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 375
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 10 Mal
Danksagung erhalten: 57 Mal
Kontaktdaten:

Re: Trigger erstellen

Beitrag von Marcus Herz »

Im ARC siehst du links im Contextmenü einer Tabelle den Eintrag Triggers, Dort kannst du einFenster öffnen, das alle anzeigt.
- wenn schon ein INSTEAD OF Trigger existiert, kann kein weiterer definiert werden => heisst auch, das script kann nicht 2x ausgeführt werden
- wenn du nur einen Default wert nach dem Insert setzen willst geht das auch einfacher:

Code: Alles auswählen

EXECUTE PROCEDURE sp_ModifyFieldProperty ( 'KUNDE', 
      'guid', 'Field_Default_Value', 
      'newidstring(''f'')', 'APPEND_FAIL', 'KUNDEfail' ); 
Du mausst halt den Tabellennamen KUNDE und das Feld 'guid' anpassen
Gruß Marcus

Es gibt keine Grenzen, aber du kannst welche ziehen.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1878
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 10 Mal
Danksagung erhalten: 22 Mal

Re: Trigger erstellen

Beitrag von Werner_Bayern »

Servus Manfred,

unter PG würde ich sagen, Du hast schon ein Feld vom Typ serial (AUTO_INCREMENT) erstellt?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 437
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Trigger erstellen

Beitrag von nightcrawler »

Hallo Werner,
die Meldung ist das, was Marcus beschreibt.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 437
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Trigger erstellen

Beitrag von nightcrawler »

Manfred hat geschrieben: Fr, 21. Mai 2021 9:32 Ich kann aber nichts finden, wo er abgelegt sein sollte. Was mache ich falsch?
Du könntest das Dictionary abfragen:

Code: Alles auswählen

SELECT * FROM system.triggers
evtl noch mit der Einschränkung

Code: Alles auswählen

SELECT * FROM system.triggers WHERE Trig_TableName LIKE 'meine Tabelle'
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 437
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Trigger erstellen

Beitrag von nightcrawler »

und dann weiter:

Code: Alles auswählen

TRY 
  DROP Trigger [meine Tabelle].[mein Trigger];
CATCH ALL 
END TRY;
CREATE TRIGGER ...
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 19997
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 53 Mal
Danksagung erhalten: 29 Mal

Re: Trigger erstellen

Beitrag von Manfred »

OK,
jetzt sind sie erstmal alle wieder weg.
Es ging aber nur über DROP Trigger (Joachim)
in der Tabelle, rechte Maustaste und dann Triggers, war alles leer. Oder meintet ihr was anderes?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kannste sein, Hauptsache pfiffig!!
Benutzeravatar
Marcus Herz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 375
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 10 Mal
Danksagung erhalten: 57 Mal
Kontaktdaten:

Re: Trigger erstellen

Beitrag von Marcus Herz »

evtl musst du erst ein Refresh des DD ausführen, wenn du mit SQL Trigger erstellst
Gruß Marcus

Es gibt keine Grenzen, aber du kannst welche ziehen.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 19997
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 53 Mal
Danksagung erhalten: 29 Mal

Re: Trigger erstellen

Beitrag von Manfred »

#-o das kann natürlich sein. Daran habe ich nicht gedacht. Jetzt ist er auch zu sehen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kannste sein, Hauptsache pfiffig!!
Antworten