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
实际上,我们通过从客户那里获得的网络服务来创建此表。这不是我们的表格。每天状态栏可能会更改,因此我们需要跟踪此更改。 –