ursus57
Goto Top

Microsoft SQL Server Feld mit Trigger aktualisieren

Ich habe folgendes Problem:

Systemumgebung: Micrsosoft SQL Server 2008 Express mit Management Studio Express, ERP Lösung mit SQL Datenbank

In der ERP Lösung habe ich eine SQL Datenbank "SL_MUFAKT". in der Tabelle "Debitoren" ein Feld "RefAdresse (nvarchar(13))" und ein Feld "_READR (nvarchar(13))"
Bedingt durch die Logik und gewisse Prozesse in der ERP Lösung muss nun in beiden Felder immer der gleiche Wert stehen. Dabei habe ich das Feld "RefAdresse" in der Maske für den Anwender sicht- und editierbar und das Feld "_READR" unsichtbar gemacht.
Nun möchte ich mit einem Trigger automatisch nach jedem aktualisieren oder neuanlegen eines Datensatzes den Wert aus dem Feld "RefAdresse" in das Feld "_READR" schreiben. Sollte im Feld "_READR" bereits ein Wert vorhanden sein, so muss dieser überschrieben werden.

Da ich bisher noch nie einen Trigger gebaut habe bin nich um jegliche Hilfe froh. Ich hoffe, ich habe das Problem einigermassen verständlich Umschrieben.

Vielen Dank

Content-Key: 320012

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

Ausgedruckt am: 19.03.2024 um 07:03 Uhr

Mitglied: Kraemer
Kraemer 04.11.2016 um 13:51:51 Uhr
Goto Top
Moin,

guck die das mal an.

Gruß Krämer
Mitglied: atze187
atze187 04.11.2016 um 14:22:42 Uhr
Goto Top
Tach,

wenn Du noch nichts mit Triggern zu tun hattest, dann lass die Finger davon und wende Dich an SelectLine oder einen ihrer Partner in Deiner Nähe.

Gruß,
André
Mitglied: Biber
Biber 04.11.2016 um 15:45:57 Uhr
Goto Top
Moin ursus57,

sooo komplex sind Trigger nun auch nicht... die gibt es in jeder Suchmaschine tonnenweise.

Du solltest nur BEVOR du Trigger einbaust, das Feld _READR per UPDATE in der Tabelle auf den gewünschten Synchronstand bringen.
Wenn du e machst, wenn ein UPDATE-Trigger existiert, dann wird _READR doppelt upgedatet.

Sinngemß würde ein simpler Trigge so aussehen:
CREATE TRIGGER tIU_AddRefAddresse ON SL_MUFAKT.debitoren
AFTER INSERT, UPDATE 
AS
  UPDATE debitoren d
  SET d._READR = d.RefAdresse
  FROM Inserted i
  WHERE d.Keyfeld1 = i.Keyfeld2 AND d.Keyfeld2 = i.Keyfeld2

  • dieser Trigger feuert nach INSERT und UPDATE
  • in der Pseudo-Tabelle "inserted" stehen die gerade neu geschriebenen Werte (in einer anderen Tabelle "deleted" die alten, vorherigen Werte)
  • ich weiss niocht, wie bei dir die Key-Felder heissen; ich hab mal im Beispiel angenommen, deine debitoren-Tabelle hat "Keyfeld1" und "Keyfeld2" als PK.

Ist nur eine ungetestete Skizze!
Also behutsam anpassen und testen.

Grüße
Biber