在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