2017-06-15 1 views
1

レコードが別のテーブルで作成されたときに、あるテーブルにレコードを挿入するためのトリガを作成しようとしています。私はこれを行う方法を考え出しましたが、私は列の値の1つの値を変更する方法を理解しようとしています。SQLトリガの挿入変換列の作成

元のテーブルには「郡」があり、2番目のテーブルには「郡」テーブルにある「郡ID」があります。どのように私は '郡'を取って '郡ID'に変換するのですか?

CREATE TRIGGER [dbo].[AQB_RMS_LocationCreate] on [AVData].[dbo].[SourceSite] 
AFTER INSERT 
AS 
BEGIN 

INSERT INTO AQB_MON.[AQB_RMS].[Location] 
([LocationName],[Latitude],[Longitude],[Enabled] 
    ,[StreetAddress1],[StreetAddress2],[City],[CountyID],[StateAbbr],[ZipCode],[DATE_CREATED]) 

SELECT i.[Description],i.[Latitude],i.[Longitude],i.[Enabled] 
    ,i.[StreetAddress1],i.[StreetAddress2],i.[City],i.[County],i.[StateRegion],i.[ZipCode], getdate() 

from [AVData].[dbo].[SourceSite] ss 
inner join inserted i on ss.SourceSiteID = i.SourceSiteID 

END 

GO 
+0

挿入されているデータと一致する「County」テーブルのフィールドは何ですか?また、現在持っている結合は、挿入に列が使用されていないため、何もしていないようです。 'SourceSite'テーブルにレコードの存在を確認するためにそれを使用していない限り? –

+0

「County」テーブルには「County」と「CountyID」があります。ジョインについてはわかりません。私は他の場所でも同様のトリガを使用しており、挿入物を実行します –

答えて

1

が、この作品ではないでしょう - これまで

私の引き金?

CREATE TRIGGER [dbo].[AQB_RMS_LocationCreate] on [AVData].[dbo].[SourceSite] 
AFTER INSERT 
AS 
BEGIN 

INSERT INTO AQB_MON.[AQB_RMS].[Location] 
([LocationName],[Latitude],[Longitude],[Enabled] 
    ,[StreetAddress1],[StreetAddress2],[City],[CountyID],[StateAbbr],[ZipCode],[DATE_CREATED]) 

SELECT i.[Description],i.[Latitude],i.[Longitude],i.[Enabled] 
    ,i.[StreetAddress1],i.[StreetAddress2],i.[City],C.CountyId,i.[StateRegion],i.[ZipCode], getdate() 

from [AVData].[dbo].[SourceSite] ss 
inner join inserted i on ss.SourceSiteID = i.SourceSiteID 
inner join dbo.County C on C.County = i.County 


END 
+0

レコードを書きましたが、CountyIDは空白のままでした。私は私が見ることができるどんな誤りも受けなかった。 –

+0

上記の例を使用すると正しく動作するので、間違った型を入力したはずです。私は '内部結合 'を' left join'に変更して、自分のコードテーブルに見つからないエントリを説明しました。 –

関連する問題