我有功能,我想将其创建为默认
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.
答案 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 constraint
或create table ... (col1 default dbo.MyFunc());
创建列绑定默认约束,则可以使用用户定义的函数。