Estoy haciendo algunos ajustes a una aplicación heredada creada en SQL Server 2000, no hace falta decir que solo quiero hacer el mínimo absoluto en el temor de que todo se desmorone.EN VEZ DE ACTUALIZACIÓN Disparador: ¿es esto posible?
Tengo una gran tabla de usuarios, tbUsers, con un indicador BIT para IsDeleted. Quiero archivar todos los registros actuales y futuros de IsDeleted = 1 en mi tabla de archivos tbDeletedUsers.
Mover los usuarios actualmente eliminados es sencillo, sin embargo, quiero una manera de mover a los futuros usuarios donde se establece el indicador IsDeleted. Podría usar un desencadenador AFTER estándar en la columna; sin embargo, planeo agregar algunas restricciones a la tabla tbUser que violaría esto, ¿qué me gustaría que mi desencadenador INSTEAD OF UPDATE active y mueva el registro a la tabla de archivo?
Supongo que mi pregunta es ... ¿es posible activar un disparador EN LUGAR DE ACTUALIZAR en la actualización de una columna individual? Esto es lo que tengo hasta ahora:
CREATE TRIGGER trg_ArchiveUsers
INSTEAD OF UPDATE ON tbUsers
AS
BEGIN
...
END
GO
¡Si es así, un ejemplo (SQL 2000 compatible) sería muy apreciado!
Actualizaciones (columnName) no existe en SQL Server. En su lugar, use COLUMNS_UPDATED (columnName). http://msdn.microsoft.com/en-us/library/ms186329.aspx –
Gracias por el comentario. Tiene razón, no hay función UPDATES() en SQL Server, ni UPDATED(), como escribí inicialmente. En realidad se llama [UPDATE()] (http://msdn.microsoft.com/en-us/library/ms187326.aspx). Editando mi respuesta y gracias de nuevo por llamar mi atención sobre mi error. –
Y parece que también está equivocado, porque COLUMNS_UPDATED() no acepta un parámetro. Devuelve una máscara de bits que refleja todas las columnas afectadas por la instrucción que invoca el desencadenador. Nunca he usado esa función, aunque, según el manual, creo que tengo una idea aproximada de cómo usarla. –