顧客データベースにDEALER_DETAILEDという1つのテーブルがありました。このテーブルのSTATUS列には、OPERATIONAL、DEACTIVE、NON-OPERATIONALの3つのパラメータが示されています。変更履歴を毎日更新する既存のテーブルのコピー
毎晩3~6時の間、パラメータの1つが変更されることがあります。たとえば、今日DEALER_CODEステータスの1つが操作可能ですが、明日以降はDEALER_CODEステータスがDEACTIVEになります。なぜ私はそのテーブルのコピーを毎日取得し、変更を追跡するために別のクエリを書く必要があるストアドプロシージャを使用してトリガを使用したくないです。
コピーとトラックの変更については、私は以下のようにクエリを書きましたが、現時点では動作しません。今は変更を追跡できませんでした。
これは私が書いたものです。あなたはそのコードに何らかの欠陥があることを教えてください。
> ALTER PROCEDURE [dbo].[sp_CreateDealertTable] AS
>
> BEGIN
>
> SET NOCOUNT ON;
>
> IF EXISTS (SELECT *
> FROM sys.objects
> WHERE object_id = Object_id(N'[dbo].[Dealer_Detailed_old]')
> AND TYPE IN (N'U'))
> DROP TABLE [dbo].[Dealer_Detailed_old];
>
> PRINT 'Creating table [dbo].[Dealer_Detailed_old].';
>
> CREATE TABLE dbo.Dealer_Detailed_old ([DealerCode]
> nvarchar(32),[DealerName] nvarchar(max),[Status] nvarchar(20))
>
> INSERT INTO Dealer_Detailed_old
> SELECT DEALER_CODE,DEALER_NAME,[STATUS] FROM dbo.DEALER_DETAILED
>
> END
step 2---track changes
IF OBJECT_ID('tempdb..#tempstatus') IS NOT NULL
drop table #tempstatus
SELECT * INTO #tempstatus FROM
(
SELECT
old.DealerCode as DEALERCODE, old.[Status] as STATUSOLD ,new.[STATUS] AS STATUSNEW
FROM
[dbo].[Dealer_Detailed_old] as old
INNER JOIN
[dbo].[DEALER_DETAILED] as new ON old.DealerCode = new.DEALER_CODE
WHERE
old.[Status] <> new.[STATUS]
) as tbl2
IF (SELECT COUNT(*) FROM #tempstatus)> 0
実際に私たちは私たちが顧客から取ったWebサービスを通じてこのテーブルを作成しています。これは私たちのテーブルではありません。毎日ステータスカラムが変更される可能性があるため、この変更を追跡する必要があります。 –