MS SQL Server 2005 - Как автоматически увеличить поле (не первичный ключ) - PullRequest
1 голос
/ 18 сентября 2008

Я хотел бы автоматически увеличивать поле с именем `incrementID 'каждый раз, когда обновляется любое поле в любой строке таблицы с именем' tb_users '. В настоящее время я делаю это с помощью оператора обновления SQL. т.е. "UPDATE tb_users SET name = @name, incrementID = incrementID + 1 ..... WHERE id = @id;

Мне интересно, как я могу сделать это автоматически. например, изменяя способ, которым сервер sql обрабатывает поле - вроде как параметр приращения «Идентичность». Прежде чем обновлять строку, я хочу проверить, отличается ли incrementID обновляемого объекта от incrementID строки в БД.

Ответы [ 4 ]

4 голосов
/ 18 сентября 2008

Столбцы в таблице могут иметь набор Identity Specification . Просто разверните узел в окне свойств и введите детали (Is Identity, Increment, Seed).

Ключевое слово IDENTITYCOL можно использовать для операций со спецификациями идентификации.

2 голосов
/ 18 сентября 2008

Этот триггер должен сработать:

create trigger update_increment for update as
if not update(incrementID) 
  UPDATE tb_users SET incrementID = incrementID + 1 
    from inserted WHERE tb_users.id = inserted.id
2 голосов
/ 18 сентября 2008

Если вам просто нужно знать, что оно изменилось, а не определенно, что это более поздняя версия или сколько было изменений, рассмотрите возможность использования столбца rowversion.

2 голосов
/ 18 сентября 2008

Вы можете использовать триггер для этого (если я правильно прочитал вас и вы хотите, чтобы значение увеличивалось при каждом обновлении строки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...