关于数的自增 能不能实现为“ 05040001”的ID即 05表示年,04表示月。0001表示流水号。0001 这个会自增。同样是用存储过程和事务来防止用户在客户端同时获得一个ID号。大家帮帮忙,给点实例,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 --下面的代码演示了生成一个日期编号的处理,编号总长度为8,前5位为年月信息,格式为YYMM,后4位为流水号。--创建得到当前日期的视图CREATE VIEW v_GetDateASSELECT dt=CONVERT(CHAR(4),GETDATE(),112)GO--得到新编号的函数CREATE FUNCTION f_NextBH()RETURNS char(8)ASBEGIN DECLARE @dt CHAR(4) SELECT @dt=dt FROM v_GetDate RETURN( SELECT @dt+RIGHT(10001+ISNULL(RIGHT(MAX(BH),4),0),4) FROM tb WITH(XLOCK,PAGLOCK) WHERE BH like @dt+'%')ENDGO--在表中应用函数CREATE TABLE tb(BH char(8) 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--*/GODROP TABLE tbDROP FUNCTION f_NextBHDROP VIEW v_getdate --下面的代码演示了生成一个日期编号的处理,编号总长度为8,前5位为年月信息,格式为YYMM,后4位为流水号。--创建得到当前日期的视图CREATE VIEW v_GetDateASSELECT dt=CONVERT(CHAR(4),GETDATE(),12)GO--得到新编号的函数CREATE FUNCTION f_NextBH()RETURNS char(8)ASBEGIN DECLARE @dt CHAR(4) SELECT @dt=dt FROM v_GetDate RETURN( SELECT @dt+RIGHT(10001+ISNULL(RIGHT(MAX(BH),4),0),4) FROM tb WITH(XLOCK,PAGLOCK) WHERE BH like @dt+'%')ENDGO--在表中应用函数CREATE TABLE tb(BH char(8) 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 -------- ----------- 05040001 105040002 205040003 405040004 14(所影响的行数为 4 行)--*/GODROP TABLE tbDROP FUNCTION f_NextBHDROP VIEW v_getdate --也就是说,对于插入这样写begin tranINSERT 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)commit tran 四位的日期,改:--创建得到当前日期的视图CREATE VIEW v_GetDateASSELECT dt=CONVERT(CHAR(4),GETDATE(),112)GO 四位年,改:--下面的代码演示了生成一个日期编号的处理,编号总长度为8,前5位为年月信息,格式为YYMM,后4位为流水号。--创建得到当前日期的视图CREATE VIEW v_GetDateASSELECT dt=CONVERT(CHAR(6),GETDATE(),112)GO--得到新编号的函数CREATE FUNCTION f_NextBH()RETURNS char(10)ASBEGIN DECLARE @dt CHAR(6) SELECT @dt=dt from v_GetDate RETURN( SELECT @dt+RIGHT(10001+ISNULL(RIGHT(MAX(BH),4),0),4) FROM tb WITH(XLOCK,PAGLOCK) WHERE BH like @dt+'%')ENDGO--在表中应用函数CREATE TABLE tb(BH char(10) 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 -------- ----------- 05040001 105040002 205040003 405040004 14(所影响的行数为 4 行)--*/GODROP TABLE tbDROP FUNCTION f_NextBHDROP VIEW v_getdate --下面的代码演示了生成一个日期编号的处理,编号总长度为8,前5位为年月信息,格式为YYMM,后4位为流水号。--创建得到当前日期的视图CREATE VIEW v_GetDateASSELECT dt=CONVERT(CHAR(6),GETDATE(),112)GO--得到新编号的函数CREATE FUNCTION f_NextBH()RETURNS char(10)ASBEGIN DECLARE @dt CHAR(6) SELECT @dt=dt FROM v_GetDate RETURN( SELECT @dt+RIGHT(10001+ISNULL(RIGHT(MAX(BH),4),0),4) FROM tb WITH(XLOCK,PAGLOCK) WHERE BH like @dt+'%')ENDGO--在表中应用函数CREATE TABLE tb(BH char(10) 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 -------- ----------- 05040001 105040002 205040003 405040004 14(所影响的行数为 4 行)--*/GODROP TABLE tbDROP FUNCTION f_NextBHDROP VIEW v_getdate 我不知道下面这SQL语名要怎么写,望高手指点!! 数据库日志疯狂增长 新手请问这个存储过程怎样写?(mssql2000) --重新发的贴子,很想得到答案,请见谅。 SQL 语句用户映射怎么写? 我在另一个存储过程pr2,调用另一个存储过程? 如何分析表中定长数据行的存储信息 视图 SQL2008如何连接第二个实例 我的行列转换对吗? 彷徨ing...散分. 各位大侠帮帮我好吗...+_+ 请教,我有一个sp,运行会导致错误:INSERT 失败,因为下列 SET 选项的设置不正确: 'QUOTED_IDENTIFIER'。
--创建得到当前日期的视图
CREATE VIEW v_GetDate
AS
SELECT dt=CONVERT(CHAR(4),GETDATE(),112)
GO--得到新编号的函数
CREATE FUNCTION f_NextBH()
RETURNS char(8)
AS
BEGIN
DECLARE @dt CHAR(4)
SELECT @dt=dt FROM v_GetDate
RETURN(
SELECT @dt+RIGHT(10001+ISNULL(RIGHT(MAX(BH),4),0),4)
FROM tb WITH(XLOCK,PAGLOCK)
WHERE BH like @dt+'%')
END
GO--在表中应用函数
CREATE TABLE tb(
BH char(8) 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
--*/
GODROP TABLE tb
DROP FUNCTION f_NextBH
DROP VIEW v_getdate
--创建得到当前日期的视图
CREATE VIEW v_GetDate
AS
SELECT dt=CONVERT(CHAR(4),GETDATE(),12)
GO--得到新编号的函数
CREATE FUNCTION f_NextBH()
RETURNS char(8)
AS
BEGIN
DECLARE @dt CHAR(4)
SELECT @dt=dt FROM v_GetDate
RETURN(
SELECT @dt+RIGHT(10001+ISNULL(RIGHT(MAX(BH),4),0),4)
FROM tb WITH(XLOCK,PAGLOCK)
WHERE BH like @dt+'%')
END
GO--在表中应用函数
CREATE TABLE tb(
BH char(8) 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
-------- -----------
05040001 1
05040002 2
05040003 4
05040004 14(所影响的行数为 4 行)
--*/
GODROP TABLE tb
DROP FUNCTION f_NextBH
DROP VIEW v_getdate
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
--创建得到当前日期的视图
CREATE VIEW v_GetDate
AS
SELECT dt=CONVERT(CHAR(4),GETDATE(),112)
GO
--下面的代码演示了生成一个日期编号的处理,编号总长度为8,前5位为年月信息,格式为YYMM,后4位为流水号。
--创建得到当前日期的视图
CREATE VIEW v_GetDate
AS
SELECT dt=CONVERT(CHAR(6),GETDATE(),112)
GO--得到新编号的函数
CREATE FUNCTION f_NextBH()
RETURNS char(10)
AS
BEGIN
DECLARE @dt CHAR(6)
SELECT @dt=dt from v_GetDate
RETURN(
SELECT @dt+RIGHT(10001+ISNULL(RIGHT(MAX(BH),4),0),4)
FROM tb WITH(XLOCK,PAGLOCK)
WHERE BH like @dt+'%')
END
GO--在表中应用函数
CREATE TABLE tb(
BH char(10) 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
-------- -----------
05040001 1
05040002 2
05040003 4
05040004 14(所影响的行数为 4 行)
--*/
GODROP TABLE tb
DROP FUNCTION f_NextBH
DROP VIEW v_getdate
--创建得到当前日期的视图
CREATE VIEW v_GetDate
AS
SELECT dt=CONVERT(CHAR(6),GETDATE(),112)
GO--得到新编号的函数
CREATE FUNCTION f_NextBH()
RETURNS char(10)
AS
BEGIN
DECLARE @dt CHAR(6)
SELECT @dt=dt FROM v_GetDate
RETURN(
SELECT @dt+RIGHT(10001+ISNULL(RIGHT(MAX(BH),4),0),4)
FROM tb WITH(XLOCK,PAGLOCK)
WHERE BH like @dt+'%')
END
GO--在表中应用函数
CREATE TABLE tb(
BH char(10) 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
-------- -----------
05040001 1
05040002 2
05040003 4
05040004 14(所影响的行数为 4 行)
--*/
GODROP TABLE tb
DROP FUNCTION f_NextBH
DROP VIEW v_getdate