Я занимался POS.
Если вам нужен первичный ключ последней вставленной строки для использования в качестве идентификатора транзакции, верните значение @@ identity для использования на стороне клиента.
Отмененные транзакции можно откатить, если вы 'Вы выполняли всю работу в блоке TRANSACTION в SQL или транзакции .NET, но самый простой способ, который вызывает наименьшее количество проблем, - это просто иметь логическое поле isCancelled, которое устанавливается в true при отмене транзакции.