テーブルから nextID を取得する SQL Server 関数があります。これは簡単ですが、使用する ID のテーブルも更新したいと思います。この手法を使用してテーブルを更新していますが、更新が行われていません。コードは以下に示されていますが、その理由を知っている人はいますか?
CREATE FUNCTION [dbo].[GetNextKeyID]
(
@user nvarchar(10),
@keytype nvarchar(20)
)
RETURNS nvarchar(15)
AS
BEGIN
DECLARE @NextID nvarchar(15);
-- get the next id for this keytype
SELECT @NextID = @user + '_' + @keytype + '_' + CONVERT(VARCHAR(3),
(SELECT CASE WHEN @keytype = 'sess' THEN SessionNext
WHEN @keytype = 'event' THEN EventNext
WHEN @keytype = 'evtc' THEN EventConsultantNext
WHEN @keytype = 'act' THEN ActivityNext
END)
)
FROM dbo.[BARKeys]
WHERE [UserID] = @user
-- increment the next id for this keytype
DECLARE @BARKeys TABLE
(
UserID nvarchar(10),
SessionNext int,
EventNext int,
EventConsultantNext int,
ActivityNext int
)
UPDATE @BARKeys
SET SessionNext = CASE WHEN @keytype ='sess' OR @keytype = 'All'
THEN SessionNext + 1
ELSE SessionNext END
,EventNext = CASE WHEN @keytype ='event' OR @keytype = 'All'
THEN EventNext + 1
ELSE EventNext END
,EventConsultantNext = CASE WHEN @keytype ='evtc' OR @keytype = 'All'
THEN EventConsultantNext + 1
ELSE EventConsultantNext END
,ActivityNext = CASE WHEN @keytype ='act' OR @keytype = 'All'
THEN ActivityNext + 1
ELSE ActivityNext END
WHERE [UserID] = @user
-- return the next id
RETURN @NextID ;
END