我刚开始使用SQL Server,我不知道它是与作业,触发器还是过程一起使用的,简而言之,我需要您支持我的是进行以下操作:在数据库中存储某些要求的记录,这些记录与可以是Completed
或Closed
的状态相关联,一周后(恰好7天)必须处于Completed
状态的要求会自动将状态更改为Closed
,但除此之外,我还需要您执行已创建记录的INSERT
(自动),这意味着该行中的所有数据都插入相同,并且唯一改变的是与状态相对应的列,在这种情况下将完成。
以下是查询,该查询用于获取状态为Completed
且超过7天的需求记录。
SELECT TK_DT_RECORDS.*
FROM TK_HD_TICKETS AS TICKETS
INNER JOIN TK_DT_RECORDS ON TICKETS.TK_HD_TICKETS_ID = TK_DT_RECORDS.TK_HD_TICKETS_ID
WHERE TK_DT_RECORDS.TK_DT_RECORDS_ID = (SELECT MAX (TK_DT_RECORDS_ID)
FROM TK_DT_RECORDS
WHERE TICKETS.TK_HD_TICKETS_ID = TK_DT_RECORDS.TK_HD_TICKETS_ID)
AND (TK_DT_RECORDS.TK_CT_STATUS_ID = 'TMN')
AND (TK_DT_RECORDS.actIVITY_DATE < DATEADD(DAY,7,GETDATE()));
直到那里,我都不知道如何在该表中执行自动INSERT
。
TK_CT_STATUS_ID
对应于Completed
的TMN状态标识符,对应于Closed
的CDO。
更新:
WITH CTE AS
(
SELECT TK_DT_RECORDS.*
FROM TK_HD_TICKETS AS TICKETS
INNER JOIN TK_DT_RECORDS ON TICKETS.TK_HD_TICKETS_ID = TK_DT_RECORDS.TK_HD_TICKETS_ID
WHERE TK_DT_RECORDS.TK_DT_RECORDS_ID = (SELECT MAX (TK_DT_RECORDS_ID)
FROM TK_DT_RECORDS
WHERE TICKETS.TK_HD_TICKETS_ID = TK_DT_RECORDS.TK_HD_TICKETS_ID)
AND (TK_DT_RECORDS.TK_CT_STATUS_ID = 'TMN')
AND (TK_DT_RECORDS.actIVITY_DATE < DATEADD(DAY,GETDATE()))
)
INSERT INTO TK_DT_RECORDS ([TK_DT_RECORDS_ID],[actIVITY_DATE],[CONTENT],[TK_HD_TICKETS_ID],[NOTE],[USER_UPDATE],[TK_CT_STATUS_ID],[TK_BT_EMPLOYEES_ID],[TK_CT_SERVICES_ID],[TK_CT_PRIORITIES_ID],[TK_CT_CATEGORIES_ID],TK_CT_SUBSERVICES_ID])
VALUES ..................;