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

时间:2023-01-17 07:10:29
函数如下,实现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()这样的

8 个解决方案

#1


--在表中应用函数
CREATE TABLE tb(
BH char(12) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col int)

#2


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 行受影响)

#3


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

#4



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

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

--删除原列
alter table tb3 drop column dt

#5


不牵涉表里的列的话用default 关键字
牵涉到的用计算列 as关键字

#6


--! 没明白

#7


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
*/

#8


各位1!!!!!

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

#1


--在表中应用函数
CREATE TABLE tb(
BH char(12) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col int)

#2


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 行受影响)

#3


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

#4



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

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

--删除原列
alter table tb3 drop column dt

#5


不牵涉表里的列的话用default 关键字
牵涉到的用计算列 as关键字

#6


--! 没明白

#7


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
*/

#8


各位1!!!!!

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