2
に新しいレコードが挿入されたとき、またはBOM.Site
の値を参照してdbo.SiteMap
の値を参照して戻したいSiteMap.SiteName
の値を入力してBOM.SiteMap
列に挿入します。だから私は引き金が行く方法だと思ったが、それは動作しません。 (トリガーがこれに最も適していない場合は、私に知らせてください!)何か提案がありますか?前もって感謝します。挿入または更新時に別のテーブルの値を持つ同じ行に値を挿入するSQLトリガー
テーブル:
=BOM=
id | Site | SiteMap
---+----------+------
1 | Mex |
2 | MXN |
3 | USA |
4 | Mex |
=SiteMap=
id | SiteName | Sitecode
---+----------+------
1 | Mexico | Mex
2 | Mexico | MXN
3 | USA | USA
4 | USA | United States of America
所望の出力:
=BOM=
id | Site | SiteMap
---+----------+------
1 | Mex | Mexico
2 | MXN | Mexico
3 | USA | United States of America
4 | Mex | Mexico
私は..
CREATE TRIGGER dbo.trMapBom on dbo.BOM
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF UPDATE([Site ])
BEGIN
UPDATE dbo.BOM
SET BOM.[Site Map] =
(
SELECT [SiteName]
from dbo.SiteMap
where [PlantCode] = [Site ]
)
END
END
GO
もう..
CREATE TRIGGER dbo.trMapBom on dbo.BOM
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.BOM set [Site ] = SiteMap.SiteName
from dbo.BOM
inner join dbo.SiteMap
on BOM.[Site ] = SiteMap.PlantCode
END
GO
を試し異なる物事のカップルを試してみました
私はあなたの提供テーブル構造で 'PlantCode'列を見ていません。それはタイプミスか何ですか?もしそうなら、 'SiteMap'テーブルから' Sitecode'カラムがあるはずです。この要件のためにトリガを行う必要はありません。あなたのストアドプロシージャ(あなたのアプリ内にある場合)でそれを達成することができます。もう1つの質問 - 新しいレコードを 'BOM'テーブルに挿入すると、関連する' SiteCode'は常に 'SiteMap'テーブルにあります。最初に確認してください。関連レコードが 'SiteMap'テーブルに存在しない場合はどうなりますか? –