【发布时间】:2011-03-28 01:46:44
【问题描述】:
在我的数据库中添加一个项目时,我需要它来自动确定字段 DisplayOrder 的值。 Identity(自动增量)将是一个理想的解决方案,但我需要能够以编程方式更改(更新)DisplayOrder 列的值,而 Identity 似乎不允许这样做。目前,我使用以下代码:
CREATE PROCEDURE [dbo].[AddItem]
AS
DECLARE @DisplayOrder INT
SET @DisplayOrder = (SELECT MAX(DisplayOrder) FROM [dbo].[MyTable]) + 1
INSERT INTO [dbo].[MyTable] ( DisplayOrder ) VALUES ( @DisplayOrder )
这是做这件事的好方法还是有更好/更简单的方法?
【问题讨论】:
-
我刚刚遇到了这个方法的一个问题: 如果表中没有行,MAX 返回 NULL。因此,此过程无法添加第一行,因为它会产生错误!
标签: sql-server tsql identity-column