SQL Server 编写自动增长的字符串型主键

1、编写标量值函数ICONVERT2STRING

CREATE FUNCTION ICONVERT2STRING(@N INT,@F INT) RETURNS VARCHAR(10) AS
BEGIN
DECLARE @M INT
DECLARE @L0 INT
DECLARE @CH VARCHAR(10)
DECLARE @ST VARCHAR(20)
SELECT @CH=''
SELECT @ST=CONVERT(VARCHAR(10),@N)
SELECT @ST=RTRIM(@ST)
SELECT @L0=LEN(@ST)
SELECT @M=1
WHILE (@M<[email protected]@L0)
	BEGIN
	SELECT @[email protected]+'0'
	SELECT @[email protected]+1
	END
SELECT @[email protected][email protected]
RETURN @ST
END

说明:参数@F为字符串后面可变部分的长度。

2、编写返回主键字符串的标量值函数GetUnitSNo

CREATE function GetUnitSNo() returns char(8) as
begin
Declare @mystr char(8)
Declare @str0 char(2)
Declare @count int
Declare @MaxEnd int
Declare @st1 char(10)
select @str0='US'
select @count=count(*) from Unit_S
if @count=0
	select @MaxEnd=0
else
	select @MaxEnd=max(substring(U#,3,len(U#)-1)*1) from Unit_S
SELECT @st1=DBO.ICONVERT2STRING(@MaxEnd+1,6)
select @[email protected]+ LTRIM(RTRIM(@st1))
return @mystr
end

说明:返回主键字符串的存储过程尚未实现。。。。

3、效果展示

SQL查询语句:SELECT DBO.GetUnitSNo()

查询结果:US000001(Unit_S表中的记录为空的情况)

4、C#前端调用

string USNO = DB.ExecuteSQLScalarTOstring("SELECT DBO.GETUNITSNO()");

时间: 2024-10-03 21:32:56

SQL Server 编写自动增长的字符串型主键的相关文章

SQL Server 2012 自动增长列,值跳跃问题

介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(int),那么跳跃值为 1000:如果数据类型为 长整型(bigint),那么跳跃值为 10000.从我们的项目来看,这种跳跃问题是不能被接受的,尤其是展示在客户端的时候.这个奇怪的问题只在 SQL Server 2012 及更高的版本中存在,SQL Server 2012之前版本不存在此问题. 背景

SQL Server 文件自动增长那些事

方法 1. 把文件的增长设置为按照固定大小增长. 如filegrowth = 100MB; ---------------------------------------------------------------------------------------------------------------------------------------------------------- 数据文件增长说明. 比如说表 T 建立在文件file1 和 file2 上.file1 file2

Sql Server实现自动增长

在学习中遇到这个问题 数据库里有编号字段 BH00001 BH00002 BH00003 BH00004 如何实现自动增长 --下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号. --得到新编号的函数 CREATE FUNCTION f_NextBH() RETURNS char(8) AS BEGIN RETURN(SELECT 'BH'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK)

sql server 语句获取表的描述,主键等等

sql语句添加表,字段的描述 --添加表的描述 --格式如右:execute sp_addextendedproperty 'MS_Description','字段备注信息','user','dbo','table','字段所属的表名','column','添加注释的字段名'; --添加表描述 EXECUTE sp_addextendedproperty 'C', '课程表', 'user', 'dbo', 'table', 'Course',NULL, NULL; --添加字段描述 EXECU

SQL Server 插入数据后获得自增主键值

通过SQLServer系统自带函数获取 String sql = "insert into goods values('" + TextBox1.Text + "'," + TextBox2.Text + ",0," + TextBox3.Text + ",'','" + DropDownList1.SelectedItem.Text + "','" + Session["username&quo

SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQL Server中启用CLR,所以一直没有尝试.最近因为项目的原因,在这方面做了一个调研,现在在这里分享一下心得. 首先要说明的是要在SQL Server中启用CLR必须是在SQL Server2005及以上版本,其次在默认情况下是

如何让SQL Server数据库自动备份并压缩成rar文件

1.  先开启xm_cmdshell服务 xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出.由于xp_cmdshell 可以执行任何操作系统命令,所以一旦SQL Server管理员帐号(如sa)被攻破,那么攻击者就可以利用xp_cmdshell 在SQL Server中执行操作系统命令,如:创建系统管理员,也就意味着系统的最高权限已在别人的掌控之中.由于存在安全隐患,所以在SQL Server 2005中, xp_cmdshell

通过作业调度建立SQL Server的自动备份

SQL Server的作业调度来建立自动备份的方法 ◆1.进入企业管理器中->管理->sql server代理->作业; ◆2.新建作业,作业名称随便取,例如:data备份,所有者选择sa,当然你也可以选择其他用户,前提是该用户有执行作业的权限; ◆3.点击步骤标签,进入步骤面板.新建步骤,步骤名可以随便填写,如步骤1,类型和数据库默认,不需要修改.命令中写入以下语句: BACKUP DATABASE [数据库名] TO DISK = N''F:data数据库备份'' WITH NOIN

SQL Server镜像自动生成脚本

SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 192.168.1.1 WSQL01192.168.1.2 WSQL02192.168.1.3 WWEB03 --★Do部分都是需要填写的 -- ============================================= -- Author: <桦仔> -- Blog: <ht