2011-03-10 23 views
0

我在嘗試使UDF包裝生成主鍵的邏輯中出現錯誤,以便在執行插入數據庫表的某些過程中使用。UDF插入到只有PK標識字段的表中的語法是什麼?

我有在存儲特效生成使用價值以下PK臺:

CREATE TABLE [dbo].[PK](
[Id] [bigint] IDENTITY(1,1) NOT NULL, CONSTRAINT [PK_PK] PRIMARY KEY CLUSTERED 
(
[Id] ASC 
) 
) 

我UDF是這樣的:

alter FUNCTION [getPK] () 
RETURNS int 
AS 
BEGIN 
declare @Output int 
    INSERT INTO pk default values 
    SET @Output = (SELECT SCOPE_IDENTITY()) 
    RETURN @Output 
END 

我試着去封裝使用我多處以下邏輯在我的DB中:

INSERT INTO pk default values 
SELECT SCOPE_IDENTITY() --to get a new ID 
+2

...你爲什麼這樣做呢? PK表的要點是什麼?你插入的實際表應該保持他們自己的主鍵。 – canon 2011-03-10 15:19:03

+0

注意:在你的表中,'Id'是一個bigint,但你的函數返回一個int。 – 2011-03-10 15:21:13

+0

您正在嘗試執行一個序列。爲什麼?你沒有閱讀你以前的問題的答案嗎?**沒有人同意「你的同事」? http://stackoverflow.com/questions/5237807/whats-better-identity-columns-or-generated-unique-id-values – gbn 2011-03-10 15:42:34

回答

0

A UDF 不能更改數據庫狀態。也就是說,它不能寫入表格。

您是否閱讀過上一個問題的答案?有沒有人建議這是個好主意?打擾這裏還是SO和DBA.SE?

+0

需要點,我想創建一個POC,因爲它沿着相同的發展線索,無論如何。 – kacalapy 2011-03-10 16:42:11

相關問題