--創(chuàng )建編號
alter TRIGGER syttyzNumberCreate
ON syttyz
after INSERT
AS
DECLARE @id nvarchar(100)
DECLARE @now nvarchar(100)
DECLARE @syttyzSizeTemp int
DECLARE @syttyzSizeStr nvarchar(100)
DECLARE @syttyzSize nvarchar(50)
declare @lastInsertTime nvarchar(100)
declare @year nvarchar(100)
SELECT @id=inserted.id,@now=year(insert_time) from inserted
--如果數據庫中還不存在記錄
if not exists (select * from syttyz where id<>@id)
begin
select @syttyzSizeTemp = 1
select @syttyzSize = @now+'_'+cast(1 as nvarchar(100))
select @year = @now;
end
else
begin
--查出新增記錄以前最后的insert_time
select @lastInsertTime=year(max(insert_time)),@syttyzSize=max(syttyz_size) from syttyz where id <> @id
if (@now>@lastInsertTime)--新的一年開(kāi)始,編號從1開(kāi)始
begin
select @syttyzSizeTemp = 1
select @syttyzSize = @now+'_'+cast(1 as nvarchar(100))
select @year = @now;
end
else--不是新的一年,在原來(lái)編號的基礎上加1
begin
select @year= substring(@syttyzSize,0,charindex('_',@syttyzSize));
select @syttyzSizeTemp = cast(substring(@syttyzSize,charindex('_',@syttyzSize)+1,len(@syttyzSize)) as int)+1;
select @syttyzSize = @year+'_'+cast(@syttyzSizeTemp as nvarchar(100))
end
end
select @syttyzSizeStr=cast(@syttyzSizeTemp as nvarchar(100))
--把數字湊夠5位
while(len(@syttyzSizeStr)<5)
begin
select @syttyzSizeStr='0'+@syttyzSizeStr;
end
--設置編號
update syttyz set sytt_yz_number = sytt_yz_number+'['+@year+']'+'第 '+@syttyzSizeStr+' 號',syttyz_size=@syttyzSize where id = @id
--創(chuàng )建編號
alter TRIGGER syttyzNumberCreate
ON syttyz
after INSERT
AS
DECLARE @id nvarchar(100)
DECLARE @now nvarchar(100)
DECLARE @syttyzSizeTemp int
DECLARE @syttyzSizeStr nvarchar(100)
DECLARE @syttyzSize nvarchar(50)
declare @lastInsertTime nvarchar(100)
declare @year nvarchar(100)
SELECT @id=inserted.id,@now=year(insert_time) from inserted
--如果數據庫中還不存在記錄
if not exists (select * from syttyz where id<>@id)
begin
select @syttyzSizeTemp = 1
select @syttyzSize = @now+'_'+cast(1 as nvarchar(100))
select @year = @now;
end
else
begin
--查出新增記錄以前最后的insert_time
select @lastInsertTime=year(max(insert_time)),@syttyzSize=max(syttyz_size) from syttyz where id <> @id
if (@now>@lastInsertTime)--新的一年開(kāi)始,編號從1開(kāi)始
begin
select @syttyzSizeTemp = 1
select @syttyzSize = @now+'_'+cast(1 as nvarchar(100))
select @year = @now;
end
else--不是新的一年,在原來(lái)編號的基礎上加1
begin
select @year= substring(@syttyzSize,0,charindex('_',@syttyzSize));
select @syttyzSizeTemp = cast(substring(@syttyzSize,charindex('_',@syttyzSize)+1,len(@syttyzSize)) as int)+1;
select @syttyzSize = @year+'_'+cast(@syttyzSizeTemp as nvarchar(100))
end
end
select @syttyzSizeStr=cast(@syttyzSizeTemp as nvarchar(100))
--把數字湊夠5位
while(len(@syttyzSizeStr)<5)
begin
select @syttyzSizeStr='0'+@syttyzSizeStr;
end
--設置編號
update syttyz set sytt_yz_number = sytt_yz_number+'['+@year+']'+'第 '+@syttyzSizeStr+' 號',syttyz_size=@syttyzSize where id = @id
view plaincopy to clipboardprint?
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--創(chuàng )建水域灘涂養殖編號
ALTER TRIGGER [syttyzNumberUpdate]
ON [dbo].[syttyz]
after UPDATE
AS
DECLARE @id nvarchar(100)
DECLARE @now nvarchar(100)
DECLARE @syttyzSizeStr nvarchar(100)
DECLARE @syttyzSize int
declare @lastInsertTime nvarchar(100)
declare @year nvarchar(100)
declare @isdraftinsert int
declare @isdraftdel int
declare @count1 int
declare @count2 int
declare @districtCode nvarchar(20)
SELECT @isdraftdel=is_draft from deleted
SELECT @id=inserted.id,@now=year(insert_time),@isdraftinsert=is_draft,@districtCode=district_code from inserted
--如果是草稿頁(yè)面 并且點(diǎn)擊提交按鈕 才生成編號
--修改頁(yè)面不重新生成編號
if(@isdraftdel=1 and @isdraftinsert=0)
begin
--如果數據庫中還不存在記錄
select @count1=count(*) from syttyz;
if(@count1=0)
begin
select @syttyzSize = 1;
end
-- if not exists (select * from syttyz where id<>@id)
-- begin
-- select @syttyzSize = 1;
-- end
else
begin
--如果該地區還沒(méi)有記錄,就從1開(kāi)始
select @count2=count(*) from syttyz where id <> @id and district_code = @districtCode and is_draft <> 1
if(@count2=0)
begin
select @syttyzSize = 1;
end
else
begin
--查出新增記錄以前最后的insert_time
select @lastInsertTime=year(max(insert_time)),@syttyzSize=max(syttyz_size) from syttyz where id <> @id and district_code = @districtCode and is_draft <> 1
if (@now>@lastInsertTime)--新的一年開(kāi)始,編號從1開(kāi)始
begin
select @syttyzSize = 1;
end
else--不是新的一年,在原來(lái)編號的基礎上加1
begin
select @syttyzSize=@syttyzSize+1;
end
end
end
select @syttyzSizeStr = cast(@syttyzSize as nvarchar(100))
--把數字湊夠5位
while(len(@syttyzSizeStr)<5)
begin
select @syttyzSizeStr='0'+@syttyzSizeStr;
end
--設置養殖編號
update syttyz set sytt_dj_number=@now+@syttyzSizeStr,sytt_yz_number = sytt_yz_number+'['+@now+']'+'第 '+@syttyzSizeStr+' 號',syttyz_size=@syttyzSize where id = @id
end
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--創(chuàng )建水域灘涂養殖編號
ALTER TRIGGER [syttyzNumberUpdate]
ON [dbo].[syttyz]
after UPDATE
AS
DECLARE @id nvarchar(100)
DECLARE @now nvarchar(100)
DECLARE @syttyzSizeStr nvarchar(100)
DECLARE @syttyzSize int
declare @lastInsertTime nvarchar(100)
declare @year nvarchar(100)
declare @isdraftinsert int
declare @isdraftdel int
declare @count1 int
declare @count2 int
declare @districtCode nvarchar(20)
SELECT @isdraftdel=is_draft from deleted
SELECT @id=inserted.id,@now=year(insert_time),@isdraftinsert=is_draft,@districtCode=district_code from inserted
--如果是草稿頁(yè)面 并且點(diǎn)擊提交按鈕 才生成編號
--修改頁(yè)面不重新生成編號
if(@isdraftdel=1 and @isdraftinsert=0)
begin
--如果數據庫中還不存在記錄
select @count1=count(*) from syttyz;
if(@count1=0)
begin
select @syttyzSize = 1;
end
-- if not exists (select * from syttyz where id<>@id)
-- begin
-- select @syttyzSize = 1;
-- end
else
begin
--如果該地區還沒(méi)有記錄,就從1開(kāi)始
select @count2=count(*) from syttyz where id <> @id and district_code = @districtCode and is_draft <> 1
if(@count2=0)
begin
select @syttyzSize = 1;
end
else
begin
--查出新增記錄以前最后的insert_time
select @lastInsertTime=year(max(insert_time)),@syttyzSize=max(syttyz_size) from syttyz where id <> @id and district_code = @districtCode and is_draft <> 1
if (@now>@lastInsertTime)--新的一年開(kāi)始,編號從1開(kāi)始
begin
select @syttyzSize = 1;
end
else--不是新的一年,在原來(lái)編號的基礎上加1
begin
select @syttyzSize=@syttyzSize+1;
end
end
end
select @syttyzSizeStr = cast(@syttyzSize as nvarchar(100))
--把數字湊夠5位
while(len(@syttyzSizeStr)<5)
begin
select @syttyzSizeStr='0'+@syttyzSizeStr;
end
--設置養殖編號
update syttyz set sytt_dj_number=@now+@syttyzSizeStr,sytt_yz_number = sytt_yz_number+'['+@now+']'+'第 '+@syttyzSizeStr+' 號',syttyz_size=@syttyzSize where id = @id
end
view plaincopy to clipboardprint?
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--創(chuàng )建水域灘涂養殖編號
ALTER TRIGGER [syttyzNumberInsert]
ON [dbo].[syttyz]
after insert
AS
DECLARE @id nvarchar(100)
DECLARE @now nvarchar(100)
DECLARE @syttyzSizeStr nvarchar(100)
DECLARE @syttyzSize int
declare @lastInsertTime nvarchar(100)
declare @year nvarchar(100)
declare @isdraftinsert int
declare @isdraftdel int
declare @count1 int
declare @count2 int
declare @districtCode nvarchar(20)
SELECT @id=inserted.id,@now=year(insert_time),@isdraftinsert=is_draft,@districtCode=district_code from inserted
--申請頁(yè)面點(diǎn)提交按鈕才生成編號,點(diǎn)存草稿按鈕不生成編號
if(@isdraftinsert=0)
begin
--如果數據庫中還不存在記錄
if(@count1=0)
begin
select @syttyzSize = 1;
end
else
begin
--如果該地區還沒(méi)有記錄,就從1開(kāi)始
select @count2=count(*) from syttyz where id <> @id and district_code=@districtCode and is_draft <> 1
if(@count2=0)
begin
select @syttyzSize = 1;
end
else
begin
--查出新增記錄以前最后的insert_time
select @lastInsertTime=year(max(insert_time)),@syttyzSize=max(syttyz_size) from syttyz where id <> @id and district_code=@districtCode and is_draft <> 1
if (@now>@lastInsertTime)--新的一年開(kāi)始,編號從1開(kāi)始
begin
select @syttyzSize = 1;
end
else--不是新的一年,在原來(lái)編號的基礎上加1
begin
select @syttyzSize=@syttyzSize+1;
end
end
end
select @syttyzSizeStr = cast(@syttyzSize as nvarchar(100))
--把數字湊夠5位
while(len(@syttyzSizeStr)<5)
begin
select @syttyzSizeStr='0'+@syttyzSizeStr;
end
--設置養殖編號
update syttyz set sytt_dj_number=@now+@syttyzSizeStr,sytt_yz_number = sytt_yz_number+'['+@now+']'+'第 '+@syttyzSizeStr+' 號',syttyz_size=@syttyzSize where id = @id
end
本文來(lái)自CSDN博客,轉載請標明出處:http://blog.csdn.net/myk_666888/archive/2010/07/21/5753124.aspx
聯(lián)系客服