当前位置: 代码迷 >> Sql Server >> sql2000怎样自动产生流水号?该如何处理
  详细解决方案

sql2000怎样自动产生流水号?该如何处理

热度:62   发布时间:2016-04-27 18:40:44.0
sql2000怎样自动产生流水号?
每次新增表单时自动产生单号,要产生的流水号形式为Q+部门号+年月日.
听说要创建触发器,请问触发器的代码是怎样的?我不懂写(初学)
小弟在此先谢谢了.

------解决方案--------------------
SQL code
--以下代码生成的编号长度为12,前6位为日期信息,格式为YYMMDD,后6位为流水号。--创建得到当前日期的视图CREATE VIEW v_GetDateASSELECT dt=CONVERT(CHAR(6),GETDATE(),12)GO--得到新编号的函数CREATE FUNCTION f_NextBH()RETURNS char(12)ASBEGIN    DECLARE @dt CHAR(6)    SELECT @dt=dt FROM v_GetDate    RETURN(        SELECT @dt+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6)         FROM tb WITH(XLOCK,PAGLOCK)        WHERE BH like @dt+'%')ENDGO--在表中应用函数CREATE TABLE tb(BH char(12) PRIMARY KEY DEFAULT dbo.f_NextBH(),col int)--插入资料INSERT tb(col) VALUES(1)INSERT tb(col) VALUES(2)INSERT tb(col) VALUES(3)DELETE tb WHERE col=3INSERT tb(col) VALUES(4)INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)--显示结果SELECT * FROM tb/*--结果BH           col ------------------- ----------- 050405000001  1050405000002  2050405000003  4050405000004  14--*/
------解决方案--------------------
SQL code
--下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号。--得到新编号的函数CREATE FUNCTION f_NextBH()RETURNS char(8)ASBEGIN    RETURN(SELECT 'BH'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK))ENDGO--在表中应用函数CREATE TABLE tb(BH char(8) PRIMARY KEY DEFAULT dbo.f_NextBH(),col int)--插入资料BEGIN TRAN    INSERT tb(col) VALUES(1)    INSERT tb(col) VALUES(2)    INSERT tb(col) VALUES(3)    DELETE tb WHERE col=3    INSERT tb(col) VALUES(4)    INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)COMMIT TRAN--显示结果SELECT * FROM tb/*--结果BH         col ---------------- ----------- BH000001  1BH000002  2BH000003  4BH000004  14--*/
  相关解决方案