При добавлении элемента в мою базу данных мне нужно его для автоматического определения значения для поля DisplayOrder. Идентификация (auto-increment) будет идеальным решением, но мне нужно иметь возможность программно изменять (UPDATE) значения столбца DisplayOrder, а Identity, похоже, не позволяет этого. На данный момент, я использую этот код:SQL Server - автоинкремент, который позволяет операторам UPDATE
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, если в таблице нет строк. Поэтому эта процедура не может добавить первую строку, так как она генерирует ошибку! – asmo
Обнаружили ошибку здесь: http://stackoverflow.com/questions/1688715/select-maxx-is-returning-null-how-can-i-make-it-return-0 – asmo