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

BassBoss
por 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.
OFERTAS EN TIENDAS Ver todas
  • -9%
    Behringer DX626 B-Stock
    96 €
    Ver oferta
  • Focusrite Scarlett 2i2 3rd Gen
    118 €
    Ver oferta
  • -13%
    Kawai ES-60
    339 €
    Ver oferta
SEGUNDA MANO EN MERCASONIC Ver todo
  • Monogram Slider + Essential Keys
    220 €
    Ver
  • DAS DSP-226 Digital Processor
    350 €
    Ver
  • Vendo SE Vbeat como nuevos
    390 €
    Ver
¿Tienes equipo que ya no usas? Véndelo en Mercasonic
danikdj
por 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.
BassBoss
por el 05/11/2006
danikdj 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!
lunatic
por 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
BassBoss
por el 06/11/2006
es k no tengo el sql server!
es un ejercicio totalmente teorico, ai esta la gracia jejeje
lunatic
por 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
lunatic
por 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
BassBoss
por el 06/11/2006
ostia tio muchas gracias
k yo no me aclaraba ni pa dios!
Nuevo post

Regístrate o para poder postear en este hilo

Música
Temas