create table 你的表 (编号 as right(10001+辅助列,4),辅助列 int identity(1,1),其他列 char(10))
insert 你的表 (其他列) values('ss')
select * from 你的表
insert 你的表 (其他列) values('ss')
select * from 你的表
解决方案 »
- 目前数据库开发用哪种数据源使程序简单?
- (急)如何获取数据库的datetime值的年月日值
- 请问类似错位效果的SELECT语句该如何实现?
- 怎么解决?【Error Message:xpsql.cpp: 错误 5 来自 CreateProcess(第 737 行)】
- 如何将一个字段的查询结果转化成临时表的字段并插入相应值?
- 如何只显示文章加入的时和分!
- 3个有关通过ASP调用,控制SQL2000的问题!请各位论坛高手教一下小弟!感激万分!!!急用啊!!!
- 各位,你们在sqlserver中怎么调试你们的存取过程?
- 如何在程序中指定大回滚段?
- 现在桌面数据库开发有市场吗?
- 存储过程高手请帮我看看问题出在哪儿?
- SQL关于数据安全问题
insert 你的表 (其他列) values('ss')
select 编号,其他列 from 你的表
go
drop table 你的表
create function getDH
returns char(10)
As
begin
declare @dh1 char(10),@dh2 char(10)
select @dh1 = max(dh) from tableName
set @dh2 = right('0000'+ cast(cast(right(@dh1,4)as int)+1
return(@dh2)
end/********
Usage: select dbo.getdh
*******/
2:在默认值中填入 dbo.getdh()
create function getDH
returns char(10)
As
begin
declare @dh1 char(10),@dh2 char(10)
select @dh1 = min(dh) from tableName
where right('0000'+ cast(cast(right(dh,4) as int)+1 as varchar),4)
not in (select dh from tableName)
set @dh2 = right('0000'+ cast(cast(right(@dh1,4)as int)+1
return(@dh2)
end
2:在默认值中填入 dbo.getdh()
create function getDH
returns char(10)
As
begin
declare @dh1 char(10),@dh2 char(10)
select @dh1 = max(dh) from tableName
set @dh2 = right('0000'+ cast(cast(right(@dh1,4)as int)+1 as varchar),4)
return(@dh2)
end/********
Usage: select dbo.getdh
*******/
2:在默认值中填入 dbo.getdh()
其中当用户删除了编号为0002的纪录后,假设此时最大的编号大于0002,在插入新数据时,系统自动产生的编号应该是0002而不是‘最大编号+1'
我贴出的问题就是为这个问题解决的.
你的方法第一步我已经试过,除了一个小错外(后面指明),都能通过。可在把getdh()指定为列的默认值时,显示了是字符串‘getdh()’,而不是getdh()返回的内容,就指教!小错:
set @dh2 = right('0000'+ cast(cast(right(@dh1,4)as int)+1
应该为:
set @dh2 = right('0000'+ cast(cast(right(@dh1,4)as int)+1 as varchar),4)