変更できないテーブル構造を持つMaximoデータベースがあります。私は作成または更新されるたびにPERSONテーブルにプライマリ電子メールアドレスをコピーしようとしています。SQLトリガーで別のテーブルを更新する
PERSONID | EMAIL | ...(other irrelevant columns)...
EMAILテーブル:
PERSONID | EMAILADDRESS | ISPRIMARY | ...(other irrelevant columns)...
あなたが見ることができるように、2つのテーブルがリンクされている次のような構造は、PERSONテーブルとEMAILテーブル
PERSONテーブルを説明しますPERSONID列に追加します。ここで私はトリガをしたいものです:
EMAILテーブルが更新されるか、新しい行が挿入されている場合は、PERSONテーブルの対応するエントリ(対応するPERSONID)にEMAILADDRESSフィールドをコピーします。 ISPRIMARYフィールドは1(1はプライマリを意味し、0はセカンダリを意味する)です。
私は多くのトリガを書いていないので、EMAILテーブルに更新または挿入されている行だけを見て、新しい/更新されたプライマリ電子メールアドレスがある場合はPERSONテーブルを更新するだけです。すべてのあなたの助けをありがとう!
UPDATE 1:私はそのトリガがいつでも何かが更新または電子メールに挿入されて動作するはずと信じて
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
:
ケイドの応答を見た後、ここで私は、フォームに始めていたトリガであります表。
私はあなたがそれに向かっているのが好きです。 Maximoシステムは、PERSONIDごとに固有のISPRIMARY項目を1つだけ保証します。彼らはそれをどうやってセットアップするのかちょっと奇妙だと私は同意しますが、なぜ彼らはそうしたのか理解しています。 –