use XMGLData
GO
IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'TR' AND NAME = 'T_INSERT_XMJBXXB')
DROP TRIGGER T_INSERT_XMJBXXB
GO
CREATE TRIGGER T_INSERT_XMJBXXB
ON XMJBXXB
FOR INSERT
AS
BEGIN TRANSACTION
declare @ksyear int
declare @ksmonth int
declare @jsyear int
declare @jsmonth int
declare @j int
set @ksyear= (select year(xmksrq) from inserted)
set @ksmonth = (select month(xmksrq) from inserted)
set @jsyear = (select year(xmjsrq) from inserted)
set @jsmonth = (select month(xmjsrq) from inserted)
set @j=1
while(@ksyear<@jsyear)
begin
while(@ksmonth<=12)
begin
insert into xmjdjdb(xmbs,nf,yf)
select xmbs,@ksyear,@ksmonth from inserted
set @ksmonth=@ksmonth+1
end
set @ksyear=@ksyear+1
while(@j<=@jsmonth)
begin
insert into xmjdjdb(xmbs,nf,yf)
select xmbs,@ksyear,@j from inserted
set @j=@j+1
end
end
if(@ksyear=@jsyear)
begin
while(@ksmonth<=@jsmonth)
begin
insert into xmjdjdb(xmbs,nf,yf)
select xmbs,@ksyear,@ksmonth from inserted
set @ksmonth=@ksmonth+1
end
end
COMMIT TRANSACTION
GO
问题基本解决,剩下来就是考虑一下如果用户修改起止日期或者用户删除该条项目的情况了,同样使用触发器就可以了 |