Plantilla Excel que utilizo para hacer mis análisis de lectura

Cómo actualizar de forma automática un campo, a partir de otra tabla en SQL Server

En esta ocasión me gustaría dejarles un código que les ayude a cómo actualizar de forma automática un campo, a partir de otra tabla en SQL Server. Me gustaría darles un contexto del problema.

Existen dos tablas, llamadas Tabla 1 y Tabla 2 (Por supuesto que estos nombres son netamente referenciales). En la Tabla 1 existe el ID_1, el cuál es el Primary Key. En la tabla 2, existe también un campo llamado ID_1, sin embargo este es un Foreing Key haciendo referencia al ID de la Tabla 1. Ahora bien, lo que se busca es automatizar el completar el ID_1 de la tabla 2, es decir, que se autocomplete de forma automática. El siguiente código lo que propone es que a partir de los campos Nombre de ambas tablas podamos hacer un actualización automática.

Pues bien, la solución a esto es hacer un Trigger After Insert, tanto en la Tabla 1 como en la Tabla 2. En el bloque de After Insert se debe poner lo siguiente:

  1. update Tabla 2 set id_1 = (
  2. select id_1 from tabla1 where tabla1.Nombre = tabla2.Nombre)
  3. where id_1 is null;
Procedo a explicar este código. En la línea 1 queremos actualizar el campo id_1 de manera automática de la Tabla 2 ¿A partir de qué? Pues del id_1 de la Tabla 1, y esto se consigue con la línea 2. En la línea 2 estamos seleccionando el campo id_1 de la tabla 1, donde el Nombre de la Tabla 1 sea igual al Nombre de la Tabla 2.
Finalmente , en la línea 3 del código buscamos que se actualicen los datos en donde el id_1 sea nulo, esto en la Tabla 2.
A continuación les dejo el código para que lo puedan copiar y pegar es sus propios escritorios de SQL. Si gustan pueden hacer pruebas del códigos, haciendo insert de más datos, cuyos nombres sean iguales.

--Creación de la tabla 1
create table tabla1(
id_1 int not null identity,
Nombre varchar (100),
Edad int
constraint PK_id_1 primary key (id_1)
);

--Creación de la tabla 2
create table tabla2(
id_2 int not null identity,
Nombre varchar(100),
Apellido varchar (100),
Direccion varchar (100),
id_1 int,
constraint PK_id_2 primary key (id_2),
constraint FK_id_1 foreign key (id_1) references tabla1(id_1)
);

--Insertar datos en la tabla 1
insert into tabla1 values
('Alejandro', 12), 
('Raul',45),
('Carlos', 35),
('Miguel', 19);

--Insertar datos en la tabla 2
insert into tabla2 values
('Alejandro','Fernandez', 'Dirección 1',null),
('Carlos','Lleucún', 'Dirección 2',null),
('Roberto','Solar', 'Dirección 3',null)
;

--Creación de Trigger asociado a insertar datos en la tabla 2
create or alter trigger actualizar_id_1_tabla2
on tabla2
after insert
as
begin
update tabla2 set id_1 = 
(select id_1 from tabla1 where tabla1.Nombre = tabla2.Nombre)
where id_1 is null;
end;

--Creación de Trigger asociado a insertar datos en la tabla 1
create or alter trigger actualizar_id_1_tabla2_desde_tabla1
on tabla1
after insert
as
begin
update tabla2 set id_1 = 
(select id_1 from tabla1 where tabla1.Nombre = tabla2.Nombre)
where id_1 is null;
end;
    

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *