2012-12-16 19 views
1

我有一個要求在SQL Server表上有一個全文索引,客戶希望索引在記錄更新後立即更新。我想最好的辦法,我們可以添加該觸發器在桌子上......在觸發器中重建全文索引

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

ALTER FULLTEXT CATALOG TUG REBUILD WITH ACCENT_SENSITIVITY = OFF 

GO 

但這被觸發時,有人告訴我,我不能重建目錄中的用戶事務。誰能告訴我如何實現我的目標?每隔幾分鐘重新安排一次預定索引似乎是一個糟糕的主意,因爲表格不會經常更新,但是如果是這樣,他們希望儘快在全文索引中提供更改。

+1

**不要這樣做!**認真 - 你應該**從來沒有**在觸發器中有任何耗時的活動......一個好的觸發器只是記錄一些東西 - 但它絕對不應該做任何耗時的工作! –

+0

完全讚賞你的觀點marc_s,但在這種情況下,它絕對不是密集型的,因爲它最多將包含幾百條記錄,這些記錄很少會改變,目前重建索引的時間<0.1秒 – Mottster

回答

1

創建一個更新表,例如:

CREATE TABLE IndexUpdates(表名NVARCHAR(255),UpdateIndex中BIT)

讓你的觸發更新相關條目1.現在有每分鐘或兩分鐘運行一次的作業,查看錶是否已更新,並讓作業重建索引。完成後,將UpdateIndex重置爲0.