将我的功能设置为默认值

时间:2017-10-03 07:51:23

标签: sql sql-server

我有功能,我想将其创建为默认

ALTER FUNCTION [dbo].[ModifiedBy]() 
RETURNS varchar(50) 
AS 
BEGIN 
    RETURN host_name() 
END 

我想做这样的事情,但它不起作用。有可能吗?

create default default_modifiedBy AS dbo.ModifiedBy()

Eror是User-defined functions, partition functions, and column references are not allowed in expressions in this context.

2 个答案:

答案 0 :(得分:2)

我刚试过这样做,它对我来说很好用:

CREATE FUNCTION [dbo].[ModifiedBy]()
RETURNS varchar(50) 
AS 
BEGIN 
    RETURN host_name() 
END 
GO


CREATE TABLE Test (
                     ID INT
                   , Hostname VARCHAR(50) DEFAULT ([dbo].[ModifiedBy]())
                 );
GO

<强>测试

INSERT INTO dbo.Test ( ID )
VALUES  ( 1 )

SELECT * FROM  dbo.Test

答案 1 :(得分:0)

From the MSDN page for create default

  

任何常量,内置函数或数学表达式都可以   使用,除了包含别名数据类型的那些。用户自定义   功能无法使用

与M.Ali一样,如果使用alter table ... add constraintcreate table ... (col1 default dbo.MyFunc());创建列绑定默认约束,则可以使用用户定义的函数。