Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQL Server函数从表中获取最大PK。若表并没有数据,它应该返回1_Sql_Sql Server_Database_Sql Server 2008_Tsql - Fatal编程技术网

如何使用SQL Server函数从表中获取最大PK。若表并没有数据,它应该返回1

如何使用SQL Server函数从表中获取最大PK。若表并没有数据,它应该返回1,sql,sql-server,database,sql-server-2008,tsql,Sql,Sql Server,Database,Sql Server 2008,Tsql,我已经在SQL Server中编写了一个函数来获取id的最大值,以便可以使用它进行排序 create function dbo.DQ_ACC_PROCESS_EXEC_MASTER_SK() returns bigint as begin declare @MAX_PK as BIGINT; select @MAX_PK = max(Process_ID) + 1 from dbo.DQ_ACC_PROCESS_EXEC_SUMMARY_LOG retur

我已经在SQL Server中编写了一个函数来获取id的最大值,以便可以使用它进行排序

create function dbo.DQ_ACC_PROCESS_EXEC_MASTER_SK()
returns bigint 
as
begin
    declare @MAX_PK as BIGINT;

    select @MAX_PK = max(Process_ID) + 1 
    from dbo.DQ_ACC_PROCESS_EXEC_SUMMARY_LOG

    return @MAX_PK;
end;
对于第一次运行,表将没有任何值,因此尽管我使用+1,但它不会给我1作为返回结果

我还尝试了使用
ISNULL(进程ID,1)
案例,当进程ID为null时,则为0,否则进程ID结束
。我还尝试了
COALESCE
。结果没有一个返回1

你能帮忙吗。我不熟悉SQL Server。

请尝试以下查询

select @MAX_PK=ISNULL(max(Process_ID),0)+1 
from dbo.DQ_ACC_PROCESS_EXEC_SUMMARY_LOG

如果表没有数据,它将返回
1
,否则将返回下一个
Process\u ID

1)这对多个连接不起作用(正确),2)这类函数是SQL的性能止动器,3)有“从盒子中取出来”的解决方案可以很好地工作:IDENTITY,SEQUENCEProcess\u ID是IDENTITY?