Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在触发器中重建全文索引_Sql_Sql Server_Full Text Search - Fatal编程技术网

Sql 在触发器中重建全文索引

Sql 在触发器中重建全文索引,sql,sql-server,full-text-search,Sql,Sql Server,Full Text Search,我要求SQL Server表上有一个全文索引,客户希望在记录更新后立即更新索引。我想我们最好把这个触发器放在桌子上 CREATE TRIGGER TR_Section_InsUpd ON dbo.[Section] AFTER INSERT, UPDATE AS ALTER FULLTEXT CATALOG TUG REBUILD WITH ACCENT_SENSITIVITY = OFF GO 但当触发时,我被告知无法在用户事务中重建目录。有人能告诉我如何实现我的目标吗?每隔几分钟重建一

我要求SQL Server表上有一个全文索引,客户希望在记录更新后立即更新索引。我想我们最好把这个触发器放在桌子上

CREATE TRIGGER TR_Section_InsUpd ON dbo.[Section] AFTER INSERT, UPDATE AS

ALTER FULLTEXT CATALOG TUG REBUILD WITH ACCENT_SENSITIVITY = OFF

GO

但当触发时,我被告知无法在用户事务中重建目录。有人能告诉我如何实现我的目标吗?每隔几分钟重建一次预定的索引似乎不是一个好主意,因为表不会经常更新,但更新后,他们希望全文索引中的更改尽快可用。

创建更新表,例如:

创建表索引更新(表名NVARCHAR(255),更新索引位)


让您的触发器将相关条目更新为1。现在有一个每隔一两分钟运行一次的作业,查看表是否已更新,并让作业重新生成索引。完成后,将UpdateIndex重置为0。

使用自动更改跟踪创建全文索引。


效果很好,没有触发器。

不要这样做!说真的-你不应该在触发器中有任何耗时的活动。。。。一个好的触发器只会记录一些东西——但它绝对不应该做任何耗时的工作!完全理解你的观点,但在这种情况下,它肯定不是密集型的,因为它最多包含几百条记录,很少会改变,目前重建索引需要花费时间
CREATE FULLTEXT INDEX on myTable (myColumn) WITH (CHANGE_TRACKING = AUTO)