Verwenden Sie eine UDF als Standardwert in einer Tabellenspalte in SQL Server

Ich habe in SQL Server 2012 Express eine Scaler-UDF (sCurrentAppUser ()) erstellt und möchte diese UDF als Standardwert beim Definieren einer Tabelle verwenden. Aber jedes Mal, wenn ich es versuche, erhalte ich die Fehlermeldung "'sCurrentAppUser' ist kein erkannter eingebauter Funktionsname."

Da ich noch nicht mehr als zwei Links posten kann (Reputation), werde ich in einem Kommentar auf meine Recherchen und Referenzen verweisen.

Hier ist meine UDF:

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

Und mein Versuch, die Tabelle mit der Standardeinschränkung für die erste Spalte zu erstellen:

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
   )
)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage