我要求在SQL Server表上有一个全文索引,客户希望在更新记录后立即更新索引。我认为最好的办法是将这个触发器添加到桌面上......
CREATE TRIGGER TR_Section_InsUpd ON dbo.[Section] AFTER INSERT, UPDATE AS
ALTER FULLTEXT CATALOG TUG REBUILD WITH ACCENT_SENSITIVITY = OFF
GO
但是当这被触发时,我被告知我无法在用户事务中重建目录。谁能告诉我如何实现我的目标?每隔几分钟进行一次预定的索引重建似乎是一个坏主意,因为该表不会经常更新,但是当它出现时,他们希望尽快在全文索引中提供这些更改。
答案 0 :(得分:1)
创建更新表,例如:
CREATE TABLE IndexUpdates(TableName NVARCHAR(255),UpdateIndex BIT)
让您的触发器将相关条目更新为1.现在有一个每分钟或两分钟运行一次的作业,查看该表是否已更新并让作业重建索引。完成后,将UpdateIndex重置为0.
答案 1 :(得分:1)
使用AUTO更改跟踪创建FULLTEXT索引。 http://msdn.microsoft.com/en-us/library/ms187317.aspx
CREATE FULLTEXT INDEX on myTable (myColumn) WITH (CHANGE_TRACKING = AUTO)
效果很好,没有触发器。