Este día investigue como trabajar con el tipo XML de SQL
server ya que si bien ya había manejado XML en SQL server, lo había manejado
para conseguir la información para las tablas como se ha hecho desde la primera
parte de la tarea programada, pero nunca había usado el tipo XML que tiene SQL
server entre sus tipos de datos y la verdad me di cuenta que sería bastante útil
para el grupo de datos el crear los XML para pruebas si lo hicieran creando los
XML’s con el tipo XML de SQL server.
También inicie con la creación de triggers, el problema fue
que no sabía que era el campo de la tabla de Evento que decía IP, además estaba
teniendo problemas con los XMLAntes y AMLDespues ya que en ciertas
circunstancias estos tenían que estar vacíos y no supe cómo crear un XML vacío.
A continuación links vistos para la investigación del tipo
XML de SQL server:
A continuación el poco código que hice ya que no sabía cómo
proceder con el campo IP hasta que el profesor contestara el correo que le envié:
CREATE
TRIGGER [dbo].[BeneficiariosInsertados]
ON [dbo].[Beneficiario]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to
prevent extra result sets from
-- interfering with SELECT
statements.
SET NOCOUNT ON;
declare @idUsuario int; --El id del usuario
declare
@Numero_de_Cuenta nvarchar(50); --Numero
cuenta para buscar el idUsuario
declare
@Fecha date = GETDATE();
declare
@TipoEvento nvarchar(100) = N'Insertar Beneficiario';
declare
@idTipoEvento int; --El id del tipo
evento
declare @IP int = 0;
declare @XMLAntes xml;
declare @XMLDespues xml;
Select
@Numero_de_Cuenta = NewBen.Numero_Cuenta, @idTipoEvento = TE.id --Determina NumeroCuenta y
idTipoEvento
from inserted NewBen, TipoEvento TE
where TE.nombre = @TipoEvento;
Select @idUsuario =
CA.idCliente from CuentaAhorro CA where CA.Numero_Cuenta =
@Numero_de_Cuenta; --Id del usuario
declare
@TablaXml TABLE ( --Tabla variable para
sacar XML del evento
id int NOT NULL,
idPersona int NOT
NULL,
idTipoID
int NOT NULL, --De
la tabla persona
Nombre
nvarchar(100) NOT NULL,
Tipo_Documento_Identificacion
nvarchar(100) NOT NULL,
Documento_Identificacion
nvarchar(100) NOT NULL,
Telefono1 int NOT NULL,
Telefono2 int NOT
NULL,
Email
nvarchar(100) NOT NULL,
Fecha_Nacimiento
date NOT NULL,
idParentesco int
NOT NULL,
Parentesco
nvarchar(3) NOT NULL,
Porcentaje int
NOT NULL,
Activo int NOT
NULL,
Fecha_Desactivacion
date NULL,
Numero_Cuenta
nvarchar(100) NOT NULL
)
insert
into @TablaXml --Insercion del Evento
en tabla variable
select
newBen.id, newBen.idPersona, P.idTipoID, P.Nombre,
P.Tipo_Documento_Identificacion,
P.Documento_Identificacion,
P.Telefono1, P.Telefono2, P.Email, P.Fecha_Nacimiento,
newBen.idParentesco,
newBen.Parentezco, newBen.Porcentaje, newBen.Activo,
newBen.Fecha_Desactivacion,
newBen.Numero_Cuenta
from inserted newBen, Persona P
Where P.id = newBen,idPersona
set @XMLDespues = (Select * from
@TablaXml as TablaXml for xml Auto, ELEMENTS XSINIL); --XML del Evento
insert into Evento
(idTipoEvento, idUser, _IP, Fecha, XMLAntes, XMLDespues) --Insercion final al evento
values(@idTipoEvento,
@idUsuario, @IP, @Fecha, @XMLAntes, @XMLDespues);
END
No hay comentarios:
Publicar un comentario