0
내 열을 매일 1000 개 이상 시작해야합니다. 모든 새 항목에 대해이 숫자는 1 씩 증가합니다. 다음 날에는 다시 1000으로 되돌려 야합니다. 어떻게해야합니까?매일 열 값 재설정
내 열을 매일 1000 개 이상 시작해야합니다. 모든 새 항목에 대해이 숫자는 1 씩 증가합니다. 다음 날에는 다시 1000으로 되돌려 야합니다. 어떻게해야합니까?매일 열 값 재설정
CREATE TABLE [dbo].[GN_GnNm_Generate_Number_T](
[GnNm_Code] [varchar](50) NOT NULL,
[GnNm_Pad_With] [varchar](3) NOT NULL,
[GnNm_No_Of_Times] [varchar](6) NOT NULL,
[GnNm_Increment_No] [int] NOT NULL, /* Starting No eg:1 or 1000 */
[GnNm_Recycle] [char](1) NOT NULL, /* Recycle Type D-Daywise Y-yearwise M-Monthwise*/
[GnNm_Recycle_Type] [varchar](1) NOT NULL,
[GnNm_Recycle_Date] [datetime] NULL
) ON [PRIMARY]
GO
INSERT INTO GN_GnNm_Generate_Number_T
VALUES ('V', '0','5','1000','D','Y',GETDATE())
/* Run & Execute this store procedure for increment no. */
/* Automatically recycle everyday. */
CREATE PROCEDURE [dbo].[usp_Genrate_Number]
@Code_Text Varchar(50), @Gen_Pad varchar(3), @Recycle Varchar(1), @Gen_Code Varchar(10)='' OUTPUT
AS
DECLARE @Pad_With Char(1), @Increment_No int, @No_Of_Times Varchar(6), @Gen_No Varchar(4),
@Recycle_Type Varchar(1), @Recycle_Date Datetime, @EndofMonth Datetime, @EndofYear Datetime
BEGIN
SELECT @Pad_With = GnNm_Pad_With , @No_Of_Times = GnNm_No_Of_Times,
@Recycle_Type = GnNm_Recycle_Type, @Recycle_Date = GnNm_Recycle_Date
FROM GN_GnNm_Generate_Number_T
WHERE GnNm_Code = @Code_Text
SELECT @EndofMonth = DATEADD(MONTH,1+DATEDIFF(MONTH,0,@Recycle_Date),-1);
SELECT @EndofYear = DATEADD(YEAR,1,@Recycle_Date)
IF @Recycle = 'Y'
BEGIN
IF @Recycle_Type = 'D' AND @Recycle_Date < CAST(CONVERT(VARCHAR,GETDATE(),102)AS DATETIME)
BEGIN
UPDATE GN_GnNm_Generate_Number_T
SET GnNm_Increment_No = 1000,
GnNm_Recycle_Date = CAST(CONVERT(VARCHAR,GETDATE(),102)AS DATETIME)
WHERE GnNm_Code = @Code_Text
END
IF @Recycle_Type = 'M' AND CAST(CONVERT(VARCHAR,GETDATE(),102)AS DATETIME) > @EndofMonth
BEGIN
UPDATE GN_GnNm_Generate_Number_T
SET GnNm_Increment_No = 0,
GnNm_Recycle_Date = CAST(CONVERT(VARCHAR,GETDATE(),102)AS DATETIME)
WHERE GnNm_Code = @Code_Text
END
IF @Recycle_Type = 'Y' AND CAST(CONVERT(VARCHAR,GETDATE(),102)AS DATETIME) = @EndofYear
BEGIN
UPDATE GN_GnNm_Generate_Number_T
SET GnNm_Increment_No = 0,
GnNm_Recycle_Date = CAST(CONVERT(VARCHAR,GETDATE(),102)AS DATETIME)
WHERE GnNm_Code = @Code_Text
END
END
SELECT @Increment_No = GnNm_Increment_No
FROM GN_GnNm_Generate_Number_T
WHERE GnNm_Code = @Code_Text
SET @Increment_No = @Increment_No + 1
SELECT @Gen_Code = @Gen_Pad + REPLICATE(''[email protected]_With+'',@No_Of_Times - (LEN(@Increment_No)))+CONVERT(VARCHAR,@Increment_No)
UPDATE GN_GnNm_Generate_Number_T
SET GnNm_Increment_No = @Increment_No
WHERE GnNm_Code = @Code_Text
SELECT @Gen_Code
RETURN
END
가정하자 테이블 이름 '된 table_1'
자동 증분 열 이름
DECLARE @NewId int = 0
IF EXISTS (select * from Table_1 where EntryDate=GETDATE() and ID=1000)
@NewId = (select max(ID) from Table_1) + 1
ELSE
@NewId = 1000
INSERT INTO TABLE_1(ID,EntryDate) VALUES (@NewId,GETDATE())
(된 table_1이 칼럼을 가정) 'ID'
날짜 열 이름 'EntryDate'임