Вы могли записать пользовательский интерфейс IComparer в вид датой создания, и затем передать его для Выстраивания. Вид. Вы, вероятно, также хотите посмотреть на StrCmpLogical, который является тем, что используется, чтобы сделать использование Проводника сортировки (сортирующий числа правильно с текстом).
Вы можете указать установить xact_abort на
перед транзакцией, чтобы гарантировать автоматический откат sql в случае ошибки.
Вы правы в том, что вся транзакция будет отменена. Вы должны ввести команду для отката.
Вы можете заключить это в блок TRY CATCH
следующим образом
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
COMMIT TRAN -- Transaction Success!
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRAN --RollBack in case of Error
-- you can Raise ERROR with RAISEERROR() Statement including the details of the exception
RAISERROR(ERROR_MESSAGE(), ERROR_SEVERITY(), 1)
END CATCH
Если одна из вставок завершилась неудачно или какая-либо часть команды завершилась неудачно, SQL-сервер откатит транзакцию?
Нет, не откатывается.
Если не откатывается , мне нужно отправить вторую команду для отката?
Конечно, вы должны выполнить ROLLBACK
вместо COMMIT
.
Если вы хотите решить, следует ли выполнять фиксацию или откатить транзакцию, вы должны удалить предложение COMMIT
из оператора, проверить результаты вставок и затем выполнить либо COMMIT
, либо ROLLBACK
в зависимости от результаты проверки.