Advertisement

Sql server字符串实现自动增长

阅读量:

在Sql自动增长列,用起来很方便,前段时间有人问题如果用字符串来实现自动增长该怎么实现?

下面是我的思路和实现代码:

在设计表的时候给要自动增长的字段设置属性为not null 默认值为:空字符串(默认值可以是任意字符串,只要和以后不冲突就行);
再建议一个触发器和一个函数,函数用来计算最新的编码id,触发器用来检测是否有id为空字符串的数据插入;
当有空字符串的数据插入时就更新那一条数据。

------------------------------------------------------华丽的分割线-------代码部分--------------------------------------------------------------

复制代码
 --建表

    
  
    
 CREATE TABLE test(id VARCHAR(10) DEFAULT '' PRIMARY KEY,NAME NVARCHAR(10))
    
 INSERT INTO test VALUES('A001','A001')--插入数据测试
    
  
    
 --建触发器
    
  
    
 CREATE TRIGGER dbo.trg_test ON test 
    
 AFTER INSERT
    
 AS
    
 BEGIN
    
 	DECLARE @id VARCHAR(10),@curid VARCHAR(10),@str VARCHAR(10),@n INT
    
 	SELECT @id=MAX(id) FROM test
    
 	SELECT @str=LEFT(@id,1),@n=CONVERT(INT,RIGHT(@id,3))+1
    
 	SELECT @curid=id FROM inserted
    
 	
    
 	IF(@curid='')
    
 	BEGIN
    
 		UPDATE test
    
 		SET id=@str+RIGHT('000000'+CONVERT(VARCHAR(10),@n),3)
    
 		WHERE id=@curid
    
 	END
    
 END

-----------------------------------------------------------结束----------------------------------------------------------------

其中SET id=@str+RIGHT('000000'+CONVERT(VARCHAR(10),@n),3),计算id替换为原先写的函数。

一下为测试用例:

INSERT INTO test(NAME) VALUES('A002')

INSERT INTO test(NAME) VALUES('A005')

全部评论 (0)

还没有任何评论哟~