sqlserver如何设置字段默认值为自定义函数??

sky0120 2010-12-24 11:15:07
函数如下,实现ID增长:
Create Function f_getid()
Returns Varchar(13)
As
Begin
Declare @id varchar(13),@dt varchar(8)
Select @dt=dt From v_getdate
Select @id=max(id) From tb Where id like '%'
IF @id Is null
Set @id='0001'
Else
Set @id=Right('0000'+Cast(Cast(Right(@id,3) As Int)+1 As Varchar),4)
Return(@id)
End
GO

如何将该函数设置为数据库表字段的默认值,类似getdate()这样的
...全文
927 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
billpu 2010-12-24
  • 打赏
  • 举报
回复
CREATE  FUNCTION dbo.f_1() --创建自定义函数
RETURNS int
AS
BEGIN
DECLARE @t1 INT
SELECT @t1='000'+RTRIM(id) FROM tb
RETURN(@t1)
END

CREATE TABLE tb (id INT,id1 AS dbo.f_1()) --创建表,使用计算列调用自定义函数

INSERT tb SELECT 1 UNION --测试
SELECT 2 UNION
SELECT 3
SELECT * FROM tb

/*
id id1
----------- ---------------
1 0001
2 0002
3 0003
*/
sky0120 2010-12-24
  • 打赏
  • 举报
回复
--! 没明白
billpu 2010-12-24
  • 打赏
  • 举报
回复
不牵涉表里的列的话用default 关键字
牵涉到的用计算列 as关键字
WaterGG 2010-12-24
  • 打赏
  • 举报
回复

--添加一列
alter table tb3 add dt1 varchar(10) default dbo.f_getid()

-- 更新此列
update tb3 set dt1=dt

--删除原列
alter table tb3 drop column dt
sky0120 2010-12-24
  • 打赏
  • 举报
回复
表已存在,且里面已有数据,不能在可视化操作界面的列属性--默认值或绑定里设置吗??
WaterGG 2010-12-24
  • 打赏
  • 举报
回复
create table #tb1(id int ,dt as getdate()) 

insert #tb1 select 1

select * from #tb1


id dt
----------- -----------------------
1 2010-12-24 11:18:03.530

(1 行受影响)
王向飞 2010-12-24
  • 打赏
  • 举报
回复
--在表中应用函数
CREATE TABLE tb(
BH char(12) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col int)
sky0120 2010-12-24
  • 打赏
  • 举报
回复
各位1!!!!!

表已存在,且里面已有数据,不能在可视化操作界面的列属性--默认值或绑定里设置吗??

34,837

社区成员

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

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