sqlserver2005数据库 给表自增列如何创建带标识的自增ID

比如一个列有idnamecodecid(外键)现在如何创建这张表让iD列每次自增时前面加上BH代号因为我有四级分类表比较多所以标识不能用纯数字希望给我详细步骤谢谢BH00... 比如 一个列有id name code cid(外键) 现在如何创建这张表 让iD列每次自增时前面加上BH代号 因为我有四级分类 表比较多 所以标识不能用纯数字 希望给我详细步骤 谢谢
BH00001
BH00002
BH00003
BH00004
展开
 我来答
zhenshz
2011-08-23 · TA获得超过395个赞
知道小有建树答主
回答量:262
采纳率:60%
帮助的人:163万
展开全部
如果你是要在建表中就转化的话可以用楼上的就可以了,如果你要是想要基于表中建的话可以这样
create table a(id int identity primary key not null,name varchar(30))
alter table a add code varchar(30)
update a set code=b.code from a,(select id,ltrim('bh'+replace(CONVERT(varchar(30),STR(id,5,0)),' ','0'))as code from a)as b where a.id=b.id

结果:
id name code
1 张三 bh00001
2 张三 bh00002
3 张三 bh00003
4 张三 bh00004
5 张三 bh00005
6 张三 bh00006
7 张三 bh00007
8 张三 bh00008
9 张三 bh00009
10 张三 bh00010
11 张三 bh00011
12 张三 bh00012
13 张三 bh00013
14 张三 bh00014
15 张三 bh00015
16 张三 bh00016
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
roy_88
推荐于2016-01-06 · TA获得超过3696个赞
知道大有可为答主
回答量:2914
采纳率:100%
帮助的人:2703万
展开全部
用计算列或用函数或触发器
如:
Create table test(ID int identity(1,1),Code as 'BH'+right(1000000+ID,5),Cid int)
追问
消息:只能对计算列创建 UNIQUE 或 PRIMARY KEY 约束,CHECK、FOREIGN KEY 和 NOT NULL 约束要求计算列是持久化的。---------如果想加外键的话该怎么办呢 请Microsoft的专家指导
追答
樓主的情況用自定義主健處理

舉個用觸發器的例子
Create table test(Code NVARCHAR(7) PRIMARY KEY,Cid int)
GO
-- 用触发器完成
create trigger tr_test_insert on test
instead of insert
AS
SET NOCOUNT ON ;
begin
declare @i int
select * into # from inserted
select @i = isnull ( cast(max(RIGHT(Code,5)) AS int), 100000 ) from test
update # set Code ='BH'+ right ( 100000 + rtrim ( @i ), 5 ), @i = @i + 1
insert test select * from #
end
go

-- 测试1
insert test (cid)
select 1 union all
select 2
go

SELECT * from test
/*
Code Cid
BH00001 1
BH00002 2
*/
go

-- 测试2
insert test (cid)
select 3 union all
select 4
go
SELECT * from test
go
/*
Code Cid
BH00001 1
BH00002 2
BH00003 3
BH00004 4
*/
DROP TABLE Test
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangzhiqing999
2011-08-23 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3260万
展开全部
1> CREATE TABLE test1 (
2> id int identity(1,1),
3> Code as 'BH' + RIGHT('0000' + CAST(id as varchar), 5),
4> value varchar(10)
5> );
6> GO
1>
2> INSERT INTO test1 VALUES ('Test');
3> GO

(1 行受影响)
1> select * from test1
2> go
id Code value
----------- ------------ ----------
1 BH00001 Test

(1 行受影响)

用计算列来处理.
这个效果可以么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式