如何在mssql中强制刷新事务中的全文索引?

时间:2010-08-23 14:38:15

标签: sql sql-server full-text-search

我试图弄清楚如何获取以下代码以返回它刚刚插入的行 - 一位同事指出并建议运行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

2 个答案:

答案 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。