gpt4 book ai didi

sql-server - 在 SQL Server 函数内更新

转载 作者:行者123 更新时间:2023-12-04 04:44:12 26 4
gpt4 key购买 nike

我有一个 SQL Server 函数,可以从表中获取 nextID。这很简单,但我还想更新所用 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

最佳答案

不,你不能这样做。函数用于只读目的。

User-defined functions cannot be used to perform actions that modify the database state.

检查this

解决方法是创建一个存储过程

关于sql-server - 在 SQL Server 函数内更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18446708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com