title: Use a UDF as the default value in a table column in SQL Server
body: <p>I created a scaler UDF (called sCurrentAppUser()) in SQL Server 2012 Express and I would like to use this UDF as a default value when defining a table. But every time I try, I get an error of "'sCurrentAppUser' is not a recognized built-in function name."</p>
  
  <p>Since I can't post more than two links yet (reputation), I'll link to my research and references in a comment.</p>
  
  <p>Here's my UDF:</p>
  
  <pre><code>ALTER FUNCTION [dbo].[sCurrentAppUser] ()
  RETURNS nVarChar(128)
  AS BEGIN
     DECLARE @CurrentAppUser nVarChar(128)
  
     IF EXISTS (SELECT 1 FROM ActiveConnections WHERE ComputerName = host_name ()) BEGIN
        SELECT   @CurrentAppUser = CONVERT (nVarChar(128), LoginUser)
        FROM     ActiveConnections
        WHERE    ComputerName = host_name ()
  
     END ELSE BEGIN
        SELECT   @CurrentAppUser = Convert (nVarChar(128), suser_sname ())
        WHERE    NOT EXISTS (
                    SELECT   1
                    FROM     ActiveConnections
                    WHERE    ComputerName = host_name ()
                 )
  
     END
  
     RETURN @CurrentAppUser
  
  END
  </code></pre>
  
  <p>And my attempt at creating the table with the default constraint on the first column:</p>
  
  <pre><code>CREATE TABLE [dbo].[Clients](
     [ModifyingUser] [nvarchar](128) NOT NULL DEFAULT sCurrentAppUser (),
     [Modification] [char](1) NULL DEFAULT 'A',
     [ModifyingHost] [nvarchar](128) NOT NULL DEFAULT host_name (),
     [ClientID] [uniqueidentifier] NOT NULL,
     [Label] [nvarchar](1024) NULL,
     CONSTRAINT [PK_Clients] PRIMARY KEY (
        [ClientID] ASC
     )
  )
  </code></pre>