У меня есть таблица сущности с именем Entity
, например:
Entity
---------------------------
id (uniqueidentifier)
name (varchar(32))
description (varchar(max))
И я хочу добавить таблицу record book
или log
для хранения всех версий Entity с именем EntityLog
EntityLog
-------------------------
version ???
entityId (uniqueidentifier) fk Entity
name (varchar(32))
description (varchar(max))
Столбец версии EntityLog
является просто эскизом, им можно манипулировать, поскольку он еще не существует.
Как автоматически назначить версиюна основе внешнего ключа EntityId
, чтобы вставки автоматически обновляли версию с 1, до 2 и т. д. для EntityId
нет для таблицы?
Как можно скорее избегать условий гонки, контекствключает в себя многопоточное приложение
Редактировать
Попытка решить:
- Читать максимальную версию
select max(version) from entityLog where entityId = myId
- Вставитьв
EntityLog
с этим ранее прочитанным числом + 1 или просто 1, если его ноль
Между 1 и 2 могут быть условия гонки, поэтому я надеялся делегировать SQL Server поточно-ориентированный способвставить вот так