我創建了一個UDF,用於爲列生成默認值。它很好用,但我想將另一個字段作爲參數傳遞給該函數。這可能嗎?使用UDF作爲列的默認值
例如,其中一個字段是DealerID字段,我想將DealerID字段的值傳遞到我的UDF中,因爲我將使用它來計算新值。任何幫助,將不勝感激!
我創建了一個UDF,用於爲列生成默認值。它很好用,但我想將另一個字段作爲參數傳遞給該函數。這可能嗎?使用UDF作爲列的默認值
例如,其中一個字段是DealerID字段,我想將DealerID字段的值傳遞到我的UDF中,因爲我將使用它來計算新值。任何幫助,將不勝感激!
沒有,因爲會DealerID被稱爲前所需的默認值(例如插入)
編輯:
這意味着,SQL Server將在插入的時候確實沒有在表中的值,僅在那之後。因此,它不能用於默認的UDF。
例如,多行插入或NEWID()的缺省值是什麼?
現在,使用DealerID上的邏輯基礎:如果它是GUID,爲什麼?這是一個內部的,非用戶可讀的值。
如果你真的需要這個,你必須使用一個計算列作爲「基本」值,另一列使用ISNULL作爲「實際」值。
如果您有特定的原因需要使用UDF,請糾正我的錯誤,但爲什麼不直接在表DDL中定義列的默認值,如果您在您的應用程序中提供了特定值UPDATE
,INSERT
等?在SELECT
中使用UDF將導致函數每行都執行一次,如果在表定義級別處理它,則會節省一些開銷。
我想做一個公式來計算默認值,這就是爲什麼我想要使用UDF。 – 2009-11-16 22:51:34
一個很好的原因可能是在多租戶數據庫中,您要使用的缺省特定於擁有所插入記錄的業務/客戶。插入新文檔記錄時,您可能需要分配「未分配」文檔組ID。在當前約束下,中間層必須查找「未分配」文檔組ID,並將其包含在INSERT語句的值中。 – AlwaysLearning 2015-01-14 01:25:37
我有一個類似的問題,我想自動分配插入到表中的新記錄的URL段落。我採取的方法是將字段的默認值設置爲'NOTSET'(僅僅是一個文本佔位符值),然後使用插入觸發器將字段ON INSERT更新爲我的UDF值(其中字段值爲NOTSET),如下所示:
CREATE TRIGGER [dbo].[TR_MyTable_MyTriggerName]
ON [dbo].[tblMyTable]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Create the geography field from the lat and lon coordinates
UPDATE tblMyTable
SET fldURLSlug = dbo.UDF_MyFunction(INS.[fldRecordTitle])
FROM tblMyTable MT INNER JOIN inserted INS ON MT.fldRecordId = INS.fldRecordId
WHERE INS.fldURLSlug = 'NOTSET'
END
GO
我想我會想用觸發器來做,我不知道如何,有什麼建議? – Shimmy 2009-12-03 03:02:48