如何设置缺省值

songguozhi 2010-09-18 09:07:17
CREATE TABLE t2(id INT IDENTITY(1,1) PRIMARY KEY, 
SNO CHAR(5),
dt DATETIME)


在这个表中,SNO理解为学号字段,为固定的五位,内容是数字型的,但是不足五位的时候前面填充0,也就是如00001,00123,12345这样的。

现在我希望通过设置SNO列的缺省值约束,在数据插入时自动填充SNO的内容,让SNO的内容自增长,并保持格式为char(5).

哪位有什么解决办法?
...全文
768 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
right(cast(100000+你的值 as varchar(6)),5)
「已注销」 2010-09-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 songguozhi 的回复:]
SQL code
CREATE TABLE t2(id INT IDENTITY(1,1) PRIMARY KEY,
SNO CHAR(5),
dt DATETIME)


在这个表中,SNO理解为学号字段,为固定的五位,内容是数字型的,但是不足五位的时候前面填充0,也就是如00001,00123,12345这样的。

现在我希望通过设置SNO列的缺省值约束,在数据插……
[/Quote]
在程序段处理不是更好?
缺省默认为‘00000’,否则right(“00000”+ “程序端的赋值”,5)不就可以了么,干嘛非要到DB段去做呢?
ws_hgo 2010-09-18
  • 打赏
  • 举报
回复
参考

--(4)生成流水号
if object_id('tb') is not null drop table tb
drop function dbo.FC_Next
create function dbo.FC_Next()
returns char(8)
as
begin
return (select 'BH'+right(1000001+isnull(right(max(BH),6),0),6) from tb)
end
create table tb
(
BH char(8) primary key default dbo.FC_Next(),
col int
)
select * from tb

begin tran
insert into tb (col) values (1)
insert into tb (col) values (2)
insert into tb(BH,col) values (dbo.FC_Next(),14)
commit tran
select * from tb

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2009/02/10/3872714.aspx
ws_hgo 2010-09-18
  • 打赏
  • 举报
回复
写个函数
黄_瓜 2010-09-18
  • 打赏
  • 举报
回复
不用触发器呀,那用自定义函数行不?
songguozhi 2010-09-18
  • 打赏
  • 举报
回复
补充一下:最好不适应触发器什么的

34,571

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧