2010-02-10 11 views

Respuesta

17

De msdn:

TRUNCATE TABLE no puede activar un disparador porque la operación no registra eliminaciones de filas individuales.

+0

Así que si tengo una tabla de registro de transacciones y quiero iniciar sesión siempre que se ejecuta un truncamiento, o algún tipo de copia de datos secundaria, que debe ser truncado cada vez que se invoca un truncado en la copia primaria, esto es imposible :-(Hay tantas razones por las que un desencadenante en TRUNCATE sería útil, incluso si no se pueden proporcionar filas individuales en el desencadenador. – Alexander

9

No puede hacer esto en el servidor SQL.

De MSDN

TRUNCATE TABLE no puede activar un disparador debido a que el funcionamiento no se registro de eliminaciones de filas individuales. Para obtener más información acerca de , vea CREATE TRIGGER (Transact-SQL).

4

¿Está dejando que los usuarios ejecuten TRUNCATE TABLE ad hoc/willy nilly? Si no es así, en lugar de preocuparse por utilizar un disparador, ¿por qué no ajusta el comando TRUNCATE en un procedimiento almacenado que también trata con lo que haya hecho el desencadenante después de que se finalizó el truncamiento? (Pero tendría que hacerlo en el orden opuesto, por supuesto.)

+1

+1 para "willy nilly" "aunque prefiero" ágilmente-bimbly " – swasheck