我有一张名为 Employee 的表。EmpId 列用作主键。在我的场景中,我不能让它自动编号。
为要插入表中的新行生成下一个 EmpId 的最佳方法是什么?
我正在使用带有 C# 的 SQL Server 2008。
这是我目前得到的代码,但是要在键值对表或链接表中输入 ID(m*n 关系)
Create PROCEDURE [dbo].[mSP_GetNEXTID]
@NEXTID int out,
@TABLENAME varchar(100),
@UPDATE CHAR(1) = NULL
AS
BEGIN
DECLARE @QUERY VARCHAR(500)
BEGIN
IF EXISTS (SELECT LASTID FROM LASTIDS WHERE TABLENAME = @TABLENAME and active=1)
BEGIN
SELECT @NEXTID = LASTID FROM LASTIDS WHERE TABLENAME = @TABLENAME and active=1
IF(@UPDATE IS NULL OR @UPDATE = '')
BEGIN
UPDATE LASTIDS
SET LASTID = LASTID + 1
WHERE TABLENAME = @TABLENAME
and active=1
END
END
ELSE
BEGIN
SET @NEXTID = 1
INSERT INTO LASTIDS(LASTID,TABLENAME, ACTIVE)
VALUES(@NEXTID+1,@TABLENAME, 1)
END
END
END