Я пытаясь выяснить, как получить следующий код для возврата строки, которую он только что вставил - сотрудник указал и предложил запустить ALTER FULLTEXT CATALOG uiris_production REBUILD, но его нельзя запустить в пользовательской транзакции.
Причина, по которой это должно происходить в транзакции, заключается в том, что это происходит из тестовой среды, в которой тест оборачивается в транзакцию, а затем откатывается.
declare @search varchar(64)
set @login_test = 'foobar'
set @search = '"' + @login_test + '*"'
begin transaction
insert into users(login) values (@login_test)
select login from users where contains(login, @search)
commit
Во-первых, убедитесь, что ваш полнотекстовый индекс настроен на автоматическое отслеживание изменений. change_tracking_state должен быть 'A' для этого запроса.
select t.name, fi.change_tracking_state
from sys.fulltext_indexes fi
inner join sys.tables t
on fi.object_id = t.object_id
where t.name = 'users'
Но даже при автоматическом отслеживании изменений существует определенная степень задержки при обновлении полного текста. Вам может понадобиться встроить WAITFOR в ваш модульный тест, чтобы учесть это.
SELECT SCOPE_IDENTITY()
сообщит вам идентификатор только что созданной записи.