У меня есть SP, который обновляет таблицу. На этом столе у меня есть триггер. Когда я запускаю SP, появляется следующая ошибка.
35330 TRG_TrackDateTime Оператор UPDATE завершился неудачно, поскольку данные не могут быть обновлены в таблице с некластеризованным индексом columnstore. Рассмотрите возможность отключения индекса columnstore перед выполнением инструкции UPDATE, а затем перестройку индекса columnstore после завершения UPDATE.
Код:
ALTER TRIGGER [TRG__TrackDateTime]
ON [Table]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @rowsUpdated int
UPDATE Table
SET TrackDateTime = GETDATE()
FROM INSERTED i, table t
WHERE i.ID = t.ID
SET @rowsUpdated=@@ROWCOUNT
IF @rowsUpdated=0 BEGIN
INSERT INTO Table
SELECT TrackDateTime
FROM INSERTED
END
END
Как отключить и включить индексы в триггере?
GETDATE()
в оператореUPDATE
. Другой вариант - отключить индекс перед пакетным обновлением с помощьюALTER INDEX .... DISABLE
и перестроить его после пакетного обновления с помощьюALTER INDEX .... REBUILD
. - person Panagiotis Kanavos   schedule 22.05.2019TrackDateTime
? Если вы не хотите использовать кластеризованный индекс columnstore, вы можете создать некластеризованный индекс, который не включает столбцы аудита. - person Panagiotis Kanavos   schedule 22.05.2019