我试图弄清楚如何获取以下代码以返回它刚刚插入的行 - 一位同事指出并建议运行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
答案 0 :(得分:3)
首先,确保为自动更改跟踪设置了全文索引。对于此查询,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以适应这种情况。
答案 1 :(得分:-2)
SELECT SCOPE_IDENTITY()
会告诉你刚刚创建的记录的ID。