0
我在我的客戶數據庫中有一個名爲DEALER_DETAILED的表。在該表中,STATUS列指示3個參數,如操作,非活動,非操作。現有表的日期跟蹤更改
每晚在3-6點鐘之間,其中一個參數可能會改變。例如,今天DEALER_CODE狀態中的一個狀態是可操作的,但是在明天之後,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
實際上,我們通過從客戶那裏獲得的網絡服務來創建此表。這不是我們的表格。每天狀態欄可能會更改,因此我們需要跟蹤此更改。 –