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:
- update Tabla 2 set id_1 = (
- select id_1 from tabla1 where tabla1.Nombre = tabla2.Nombre)
- where id_1 is null;
--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;