我有桌子:
create table Aprovizionari
(
ID_Aprovizionare int identity(1,1) primary key,
CodCarte char(3) foreign key references Carti(CodCarte),
CodLibrarie char(3) foreign key references Librarii(CodLibrarie),
DataAprovizionare date default getdate(),
Cantitate int default 1
)
create table Returnari
(
CodRet char(3) primary key,
CodCarte char(3) foreign key references Carti(CodCarte),
CodLibrarie char(3) foreign key references Librarii(CodLibrarie),
CodEditura char(4) foreign key references Edituri(CodEditura),
DataRet date,
Cantitate int
)
我有一个触发器,当我从另一个表Facturi(发票)添加Cantitate时,从Aprovizionari(Supply)减少列Cantitate(Quantity)。
在Returnari(退货书籍)我应该:
DataRet date,--this should be =DataAprovizionare+3 mounths
Cantitate int--this should be=the remaining Cantitate(Quantity) from Aprovizionari at date=DataAprovizionare+3 mounts
答案 0 :(得分:0)
为此,您需要每天检查3个月前的Aprovizionari
条记录。当您找到一个INSERT
Returnari
记录时。
为此,您必须创建一个存储过程,在执行时将创建Returnari
记录,然后安排SQL Server代理作业每天执行该过程。
存储过程看起来像:
CREATE PROCEDURE YourDailyProc ( @Date DATE )
AS
INSERT INTO Returnari (CodCarte, CodLibrarie, DataRet, Cantitate)
SELECT CodCarte, CobLibrarie, CAST(@Date AS DATE), Cantitate
FROM Aprovizionari
WHERE DataAprovizionare = CAST(DATEADD(MONTH, -3, @Date) AS DATE)
GO
目前尚不清楚你会在哪里得到CodEditura
,但可能你只需要加入另一张桌子。
现在你需要一份工作来每天执行EXEC YourDailyProc @Date=CURRENT_TIMESTAMP
。这个答案看起来像是你需要做的所有信息 - how to schedule a job for sql query to run daily?