数据库如何自动生成业务ID 我想以当前的时间为业务ID 比如 业务ID 20098281239 这段数字代表2009年8月28号 12点39分 它怎么才能在数据库中自动生成当新加一条记录的时候 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 --以下代码生成的编号长度为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--*/-----------------------------------------------本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2009/04/26/4125309.aspx create table tb( 业务ID as replace(replace(replace(convert(varchar(19),getdate(),120),'-',''),' ',''),':',''), otherinfo varchar(100))insert tb select 'test'select * from tbdrop table tb/**业务ID otherinfo ------------------- --------20090828124445 test(所影响的行数为 1 行)**/时分秒,精确到分的话,19改为17 CREATE TABLE tb(BH char(12) PRIMARY KEY DEFAULT CONVERT(varCHAR(8),GETDATE(),112)+ left(replace(convert(varchar(10),getdate(),114),':',''),4),col int) getdate()之后 处理下字符串即可 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')/*20090828124745(1 行受影响)*/ CREATE TABLE tb(BH char(12)DEFAULT (CONVERT(varCHAR(8),GETDATE(),112)+ left(replace(convert(varchar(10),getdate(),114),':',''),4)),col int)--插入资料INSERT tb(col) VALUES(1)INSERT tb(col) VALUES(2)INSERT tb(col) VALUES(3)--显示结果SELECT * FROM tb/*BH col------------ -----------200908281248 1200908281248 2200908281248 3(4 行受影响)*/ SQL查询上一篇下一篇合成一个查询语句 删除字段内特定内容! 关于SQL的复杂联查~!! 两台电脑之间,怎么访问数据? 求教一个mssql写法 MSSQL里报错!无法绑定由多个部分组成的标识符,access没事, 请问这些功能如何制作 帮忙想一下这个语句怎么编 求一个比较难的sql语句 各位数据库高手,我想学习数据库编程,请问用什么语言好? 如何解决并发查询及更新的问题? order by疑问
--创建得到当前日期的视图
CREATE VIEW v_GetDate
AS
SELECT dt=CONVERT(CHAR(6),GETDATE(),12)
GO--得到新编号的函数
CREATE FUNCTION f_NextBH()
RETURNS char(12)
AS
BEGIN
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+'%')
END
GO--在表中应用函数
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=3
INSERT tb(col) VALUES(4)
INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)--显示结果
SELECT * FROM tb
/*--结果
BH col
------------------- -----------
050405000001 1
050405000002 2
050405000003 4
050405000004 14
--*/-----------------------------------------------本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2009/04/26/4125309.aspx
(
业务ID as replace(replace(replace(convert(varchar(19),getdate(),120),'-',''),' ',''),':',''),
otherinfo varchar(100)
)insert tb select 'test'select * from tbdrop table tb/**
业务ID otherinfo
------------------- --------
20090828124445 test(所影响的行数为 1 行)
**/
时分秒,精确到分的话,19改为17
BH char(12) PRIMARY KEY
DEFAULT CONVERT(varCHAR(8),GETDATE(),112)+ left(replace(convert(varchar(10),getdate(),114),':',''),4),
col int)
/*20090828124745(1 行受影响)*/
BH char(12)
DEFAULT (CONVERT(varCHAR(8),GETDATE(),112)+ left(replace(convert(varchar(10),getdate(),114),':',''),4)),
col int)--插入资料
INSERT tb(col) VALUES(1)
INSERT tb(col) VALUES(2)
INSERT tb(col) VALUES(3)
--显示结果
SELECT * FROM tb
/*
BH col
------------ -----------
200908281248 1
200908281248 2
200908281248 3
(4 行受影响)
*/