Ich habe eine Maximo-Datenbank, die eine Tabellenstruktur hat, die ich nicht ändern kann. Ich versuche, die primäre E-Mail-Adresse in die PERSON-Tabelle zu kopieren, wann immer sie erstellt oder aktualisiert wird. Die folgende Struktur beschreibt die Tabelle Person und E-MAIL-TabelleSQL-Trigger zum Aktualisieren einer anderen Tabelle
PERSON Tabelle:
PERSONID | EMAIL | ...(other irrelevant columns)...
E-MAIL-Tabelle:
PERSONID | EMAILADDRESS | ISPRIMARY | ...(other irrelevant columns)...
Wie Sie sehen können, sind die beiden Tabellen verknüpft sind, in der Spalte PERSONID. Hier ist, was ich möchte, dass der Trigger zu tun:
Wenn die EMAIL-Tabelle aktualisiert wird oder eine neue Zeile eingefügt wird, möchte ich das Feld EMAILADDRESS in den entsprechenden Eintrag (wie durch PERSONID verknüpft) in der Tabelle PERSON IF kopieren ISPRIMARY-Feld ist gleich 1 (1 bedeutet primär, 0 bedeutet sekundär).
Ich habe nicht viele Trigger geschrieben, also möchte ich sicherstellen, dass ich nur die Zeilen suche, die aktualisiert oder in die EMAIL-Tabelle eingefügt werden und nur die PERSON-Tabelle aktualisieren, wenn eine neue/aktualisierte primäre E-Mail-Adresse vorhanden ist. Vielen Dank im Voraus für Ihre Hilfe!
UPDATE 1:
Nachdem bei Cade Antwort suchen, hier ist der Auslöser ich Form am Anfang:
CREATE TRIGGER EMAIL_update ON UPDATE,INSERT AS BEGIN
UPDATE p
SET p.email = i.emailaddress
FROM dbo.PERSON as p
INNER JOIN inserted AS i ON i.PERSONID = p.PERSONID AND i.isprimary=1
END
ich, dass Trigger glauben sollte jederzeit arbeiten, um etwas aktualisiert oder an die E-Mail eingefügt Tabelle.
Ich mag, wohin Sie damit gehen. Das Maximo-System garantiert nur einen einzigen ISPRIMARY-Eintrag pro PERSONID. Ich stimme zu, es ist ein wenig merkwürdig, wie sie es aufgebaut haben, aber ich verstehe, warum sie es so gemacht haben. –