Alguien que sepa de SQL-Server pequeño favor!

BassBoss
#1 por BassBoss el 05/11/2006
pues eso si me puede ayudar alguien con esto:
Tengo el siguiente problema, no es muy complicado pero no se como hacerlo::


Tengo una tabla llamada ARTICULOS, con la siguiente estructura:

CodigoArticulo---------Nchar(10)
Descripción------------ Nchar(30)
Stock------------------- Int

Tengo otra tabla llamada AUDITORIA, con esta otra estructura:

CodigoArticulo---------Nchar(10)
Descripción------------ Nchar(30)
Stock------------------- Int
Usuario-----------------Nchar(30)
Fecha------ -------------Nchar(30)
Equipo------------------Nchar(30)

Debo Crear un sistema de auditoría de tal manera que cuando se borre algún registro de la tabla ARTICULOS, se generen en la tabla AUDITORIA los datos de los registros borrados así como el usuario que lo hizo (system_user), la fecha (getdate()) y el equipo desde el que se hizo (host_name()).

A ver si alguien puede ayudarme por aqui.
Necesito el codigo para esa Auditoria.
Mis conocimientos de SQL Server son nulos.
Muchas Gracias a todos por adelantado.

Saludos.
Subir
OFERTASVer todas
  • beyerdynamic DT-770 Pro
    138 €
    Ver oferta
  • -8%
    Behringer X Air XR18
    645 €
    Ver oferta
  • -40%
    ¡Precio mínimo histórico! AKAI MPK 261
    298 €
    Ver oferta
danikdj
#2 por danikdj el 05/11/2006
Vamos a ver. La solución para lo que quieres es utilizar triggers o disparadores, una herramienta del lenguaje SQL que te permite ejecutar acciones en tu base de datos según se dan ciertas condiciones.
Tienes que definir un trigger que se ejecute antes de cada borrado de registro de la tabla ARTICULOS y que inserte un nuevo registro en la tabla AUDITORIA con los datos replicados del registro que se va a borrar, y con el usuario, la fecha y el equipo.
La sintaxis concreta no te la puedo facilitar de memoria porque no la recuerdo pero si buscas en Google ejemplos de triggers te saldrán mogollón.
Subir
BassBoss
#3 por BassBoss el 05/11/2006
Alguien escribió:

La sintaxis concreta no te la puedo facilitar de memoria porque no la recuerdo pero si buscas en Google ejemplos de triggers te saldrán mogollón.

si lo se!
pero salen tantos...
yo kiero el codigo exacto para eso!
Subir
lunatic
#4 por lunatic el 06/11/2006
pues hombre, si tienes sql Server 2005, al desplegar la base de datos y luego las tablas, si desplegas sobre tablas veras que cuelga de ella un directorio que se llama Triggers o Desencadenantes, botón derecho, nuevo trigger.

para capturar el evento de inserción, tienes que poner ON INSERT, UPDATE, DELETE
(depende de lo que quieras hacer)
y ya debajo de eso las instrucciones que quieras hacer.

si pones T-SQL Create Trigger en google, encontraras información y ejemplos a chorros, prueba en msdn también.

saludos
Subir
BassBoss
#5 por BassBoss el 06/11/2006
es k no tengo el sql server!
es un ejercicio totalmente teorico, ai esta la gracia jejeje
Subir
lunatic
#6 por lunatic el 06/11/2006
aqui tienes el script del trigger, solo tienes que rellenarlo con tus inserts y ponerle un nombre según el esquema que ves:

-- ================================================
-- Template generated from Template Explorer using:
-- Create Trigger (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- See additional Create Trigger templates for more
-- examples of different Trigger statements.
--
-- This block of comments will not be included in
-- the definition of the function.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
CREATE TRIGGER .
ON .
AFTER
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for trigger here

END
GO
Subir
lunatic
#7 por lunatic el 06/11/2006
aqui tienes el script del trigger, solo tienes que rellenarlo con tus inserts y ponerle un nombre según el esquema que ves:

-- ================================================
-- Template generated from Template Explorer using:
-- Create Trigger (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- See additional Create Trigger templates for more
-- examples of different Trigger statements.
--
-- This block of comments will not be included in
-- the definition of the function.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
CREATE TRIGGER .
ON .
AFTER
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for trigger here

END
GO
Subir
BassBoss
#8 por BassBoss el 06/11/2006
ostia tio muchas gracias
k yo no me aclaraba ni pa dios!
Subir
Nuevo post

Regístrate o para poder postear en este hilo