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

Printed on: April 19, 2024 at 17:04 o'clock

Member: Kraemer
Kraemer Nov 04, 2016 at 12:51:51 (UTC)
Goto Top
Moin,

guck die das mal an.

Gruß Krämer
Member: atze187
atze187 Nov 04, 2016 at 13:22:42 (UTC)
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é
Member: Biber
Biber Nov 04, 2016 at 14:45:57 (UTC)
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