2017-10-03 2 views
0

Ich habe Funktion, und ich will es als Standardmeine Funktion als Standard festlegen

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

ich so etwas wie dies tun will schaffen, aber es funktioniert nicht. ist es möglich?

create default default_modifiedBy AS dbo.ModifiedBy() 

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

+0

Können Sie den Code zu bestellen, die Sie versucht haben und es in der Post hinzu? Die Frage ist nicht klar –

+0

Was ist default_modifiedBy? Sie möchten eine Spalte in der Tabelle erstellen, oder was? – Amit

+0

Ich möchte Standard namens "default_modifiedBy" AS diese Funktion dbo.ModifiedBy() ... sry ich weiß nicht, was Sie nicht verstehen – efysis

Antwort

0

From the MSDN page for create default:

Jede Konstante, integrierte Funktion oder mathematischen Ausdruck kann verwendet werden, mit Ausnahme derjenigen, die Alias-Datentypen enthalten. Benutzerdefinierte Funktionen können nicht

Wie M.Ali schreibt verwendet werden, können Sie eine benutzerdefinierte Funktion verwenden können, wenn Sie eine Spalte gebundenen Standardeinschränkung mit alter table ... add constraint oder create table ... (col1 default dbo.MyFunc()); erstellen.

+0

https://ctrlv.sk/iHEy hier können Sie sehen, dass der Standard dbo.GetWkstaName() ist ... ich möchte dasselbe mit meinem tun ModifiedBy() – efysis

+0

[Von MSDN] (https://docs.microsoft.com/en-us/sql/t-sql/statements/create-default-transact-sql): Jede Konstante, integrierte Funktion oder mathematisch Ausdruck kann verwendet werden, außer solche, die Aliasdatentypen enthalten. Benutzerdefinierte Funktionen können nicht verwendet werden – Andomar

+0

wie Sie auf dem Bildschirm sehen können, irgendwie ist es möglich .. oder dass dritte Zeile mit Standard dbo.GetWkstaName() ist etwas anderes? seine auch benutzerdefinierte Funktion – efysis

2

Ich habe dies zu tun gerade versucht, und es funktioniert gut für mich:

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 

-Test

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

SELECT * FROM dbo.Test 
+0

hmmm, so sieht es so aus, als ob du nur auf diese Weise die Funktion als Standard hinzufügen kannst ... du weißt, ich wollte einen Standard erstellen und ihn dann an ein paar Spalten binden – efysis

Verwandte Themen