Borrado de tablas relacionadas SQL Server

Hola, estoy haciendo una aplicación con VB 6.0 y SQL Server 7.0 (mi primera aplicación), y se me plantea la duda de como llevar a cabo el borrado y la actualización de tablas relacionadas. Todo lo estoy haciendo por código (con ADO)y quisiera saber si existe algún método para que estas acciones sean un poco automáticas, quiero decir, hasta ahora a la hora de eliminar un registro que tiene relaciones en otras bases de datos lo que hago es ir borrando primero en las tablas relacionadas y finalmente borro el registro en la tabla que tiene la clave principal. No sé si será posible, de alguna manera, que borrando el registro de la tabla con la clave principal se borren todos los registros relacionados.
A lo mejor lo os pregunto es una tontería pero soy nuevo en el tema.
Muchas gracias de antemano!
César

1 respuesta

Respuesta
1
Claro que se puede
Existe el termino de trigger que lo sporta sql server, un trigger es como una funcioncita que vive en tu manejador, ahí le dices que por ejemplo cuando se ejecute cierta acción (un borrado) se hagan por, y y z acciones
te mando un pequeño ejemplo de un trigger
de todas formas la ayuda de sql server es muy buena. Con ejemplos y explicaciones claras
Este ejemplo crea un desencadenador que, cuando se inserta o se cambia un nivel de trabajo de empleado, comprueba que el nivel especificado del trabajo del empleado (job_lvls) en el que se basan los salarios se encuentra en el intervalo definido para el trabajo. Para obtener el intervalo adecuado, debe hacerse referencia a la tabla jobs.
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'employee_insupd' AND type = 'TR')
DROP TRIGGER employee_insupd
GO
CREATE TRIGGER employee_insupd
ON employee
FOR INSERT, UPDATE
AS
/* Get the range of level for this job type from the jobs table. */
DECLARE @min_lvl tinyint,
@max_lvl tinyint,
@emp_lvl tinyint,
@job_id smallint
SELECT @min_lvl = min_lvl,
@max_lvl = max_lvl,
@emp_lvl = i.job_lvl,
@job_id = i.job_id
FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id
JOIN jobs j ON j.job_id = i.job_id
IF (@job_id = 1) and (@emp_lvl <> 10)
BEGIN
RAISERROR ('Job id 1 expects the default level of 10.', 16, 1)
ROLLBACK TRANSACTION
END
ELSE
IF NOT (@emp_lvl BETWEEN @min_lvl AND @max_lvl)
BEGIN
RAISERROR ('The level for job_id:%d should be between %d and %d.',
16, 1, @job_id, @min_lvl, @max_lvl)
ROLLBACK TRANSACTION
END

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas