它看起来是因为你不喜欢你需要一个计划作业t希望在插入到A时将行插入到表B中。计划作业可以调用存储过程或直接执行SQL查询。
下面是creating a stored procedure语法:
CREATE PROCEDURE BuildBFromA
AS
BEGIN
DECLARE @Numbers TABLE
(
Number int Primary Key
)
--You get the idea
INSERT into @Numbers
VALUES (0),(1),(2),(3)
--Put your insert query here.
insert B (b1, bi, bN)
Select a1, a1, aN
from a
join @Numbers n on 1=1
where DATEADD(a.aN,n.Number,a.ai) = convert(date,getdate())
END
GO
下面是adding a scheduled job语法:
USE msdb ;
GO
EXEC dbo.sp_add_job
@job_name = N'Build B' ;
GO
EXEC sp_add_jobstep
@job_name = N'Build B',
@step_name = N'Insert Rows in B based on A',
@subsystem = N'TSQL',
@command = N'EXECUTE BuildBFromA',
@retry_attempts = 5,
@retry_interval = 5 ;
GO
EXEC dbo.sp_add_schedule
@schedule_name = N'RunEveryMinute',
@freq_type = 4,
@active_start_time = 233000;
USE msdb ;
GO
EXEC sp_attach_schedule
@job_name = N'Build B',
@schedule_name = N'RunEveryMinute';
GO
EXEC dbo.sp_add_jobserver
@job_name = N'Build B';
GO
通常我会在SQLFiddle.com创建一个实例,但该网站似乎没有现在的工作。
嗨巴尔托,欢迎来到SO,很好的问题(在格式/规则方面)。 –
目前还不清楚为什么你不愿意使用触发器 – FLICKER
它不是真的由客户启动。客户端仅将行插入到表A中。Table A上创建的触发器将触发Trigger并将行插入到表B中。 – Squirrel