SQL - Como obtener el valor anterior

 
Vista:

Como obtener el valor anterior

Publicado por javier (1 intervención) el 27/08/2004 01:39:58
Como puedo hacer para en un trigger de actualizacion obtener el valor que tenia un campo antes de ser modificado me explico.
set @valor=(select balaance from updated) // me devuelve el valor que se mando a cambiar

pero el valor que tenia balancer antes que modificara como lo recupero?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como obtener el valor anterior

Publicado por Isaías Islas (5072 intervenciones) el 27/08/2004 16:33:50
Hola Javier

Si lees tu ayuda en linea (BOL), econtraras que el registro MODIFICADO o BORRADO, se encuentra siempre en la tabla DELETED, de ahi, podrias tomar el registro "anterior", aqui el ejemplo:

CREATE TRIGGER updEmployeeData
ON employeeData
FOR update AS
/*Check whether columns 2, 3 or 4 has been updated. If any or all of columns 2, 3 or 4 have been changed, create an audit record. The bitmask is: power(2,(2-1))+power(2,(3-1))+power(2,(4-1)) = 14. To check if all columns 2, 3, and 4 are updated, use = 14 in place of >0 (below).*/

IF (COLUMNS_UPDATED() & 14) > 0
/*Use IF (COLUMNS_UPDATED() & 14) = 14 to see if all of columns 2, 3, and 4 are updated.*/
BEGIN
-- Audit OLD record.
INSERT INTO auditEmployeeData
(audit_log_type,
audit_emp_id,
audit_emp_bankAccountNumber,
audit_emp_salary,
audit_emp_SSN)
SELECT 'OLD',
del.emp_id,
del.emp_bankAccountNumber,
del.emp_salary,
del.emp_SSN
FROM deleted del

-- Audit NEW record.
INSERT INTO auditEmployeeData
(audit_log_type,
audit_emp_id,
audit_emp_bankAccountNumber,
audit_emp_salary,
audit_emp_SSN)
SELECT 'NEW',
ins.emp_id,
ins.emp_bankAccountNumber,
ins.emp_salary,
ins.emp_SSN
FROM inserted ins
END
GO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar