1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 sql语句: /****** 对象: Table [dbo].[yg_SequenceNumber] 脚本日期: 11/12/2010 11:01:35 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[yg_SequenceNumber]( [AutoID] [int] IDENTITY(1,1) NOT NULL, [snID] [uniqueidentifier] NULL, [SNType] [int] NULL, [SNKey] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL, [SN] [int] NULL, [UpdateDate] [datetime] NULL, [EmployeeID] [uniqueidentifier] NULL, [AddDate] [smalldatetime] NULL, [Flag] [int] NULL CONSTRAINT [DF_yg_SequenceNumber_Flag] DEFAULT ((1)) ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'自增序号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'yg_SequenceNumber', @level2type=N'COLUMN',@level2name=N'AutoID' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'唯一标识id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'yg_SequenceNumber', @level2type=N'COLUMN',@level2name=N'snID' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序号类型' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'yg_SequenceNumber', @level2type=N'COLUMN',@level2name=N'SNType' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序号键值' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'yg_SequenceNumber', @level2type=N'COLUMN',@level2name=N'SNKey' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'序号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'yg_SequenceNumber', @level2type=N'COLUMN',@level2name=N'SN' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'更新日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'yg_SequenceNumber', @level2type=N'COLUMN',@level2name=N'UpdateDate' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'添加者id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'yg_SequenceNumber', @level2type=N'COLUMN',@level2name=N'EmployeeID' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'添加日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'yg_SequenceNumber', @level2type=N'COLUMN',@level2name=N'AddDate' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'状态标示 ,比如锁定、删除' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'yg_SequenceNumber', @level2type=N'COLUMN',@level2name=N'Flag' public static string GetGenerateNumber(string snkey, int snType) { try { string strSql = @"if exists(select 1 from GS_SequenceNumber with(xlock) where SNType = @SNType and SNKey = @SNKey) begin update GS_SequenceNumber set SN = SN + 1, UpdateDate = @UpdateDate where SNType = @SNType and SNKey = @SNKey select SN from GS_SequenceNumber where SNType = @SNType and SNKey = @SNKey end else begin insert into GS_SequenceNumber(snID, SNType, SNKey, UpdateDate, SN) values(@snID, @SNType, @SNKey, @UpdateDate,@SN) select 1 end"; SqlParameter[] parameters = { new SqlParameter("@snID", SqlDbType.UniqueIdentifier,16), new SqlParameter("@SNKey", SqlDbType.VarChar,200), new SqlParameter("@SN", SqlDbType.Int,4), new SqlParameter("@UpdateDate", SqlDbType.DateTime), new SqlParameter("@SNType", SqlDbType.Int,4)}; parameters[0].Value = Guid.NewGuid(); parameters[1].Value = snkey; parameters[2].Value = snType; parameters[3].Value = DateTime.Now; parameters[4].Value = snType; object obj = DBHelper.GetSingle(strSql.ToString(), parameters); return string.Format(snkey, obj); } catch (Exception ex) { return ex.Message; } } 调用: protected static string PreNo() { string year = DateTime.Now.Year.ToString().Substring(2); string month = DateTime.Now.Month.ToString().Length == 1 ? "0" + DateTime.Now.Month.ToString() : DateTime.Now.Month.ToString(); string number = "{0:00000000}"; return GenerateNumberBLL.GetGenerateNumber(year + month + number, 1); }