わかりましたので、かなり基本的なトリガーがあります:
つまり、挿入後、IP 情報を取得し、挿入された行を新しいデータで更新します。
CREATE TRIGGER [BasicData.IPInfo.Gather]
ON [BasicData]
AFTER INSERT
AS
BEGIN
DECLARE @City VARCHAR(1000),
@Country VARCHAR(1000),
@IP VARCHAR(1000),
@ROWID UNIQUEIDENTIFIER
SELECT @IP=[IP],@ROWID=[ID] FROM [inserted]
SELECT @Country = [Country], @City= [City]
FROM [IPInfo] WHERE [IP] = @IP
IF (@City IS NOT NULL) AND (@Country IS NOT NULL)
BEGIN -- Never seems to fire
UPDATE [BasicData]
SET [IPCountry]=@Country,[IPCity]=@City
WHERE [ID] = @ROWID
END
ELSE
BEGIN -- Fired correctly
INSERT INTO [IPInfo.Missing] VALUES (@IP)
END
END
問題は、欠落している IP 情報を正しく追加することです (欠落している場合のみ)。
私は考えられるあらゆる方法でそれを微調整しました...(私のトリガーの知識はかなり悪いです)