Getting Started with Adobe After Effects - Part 6: Motion Blur


Upload Image Close it
Select File

Browse by Tags · View All
TSQL 1
SQL Server 1
CTE recursivo 1
Teoría de números 1
Partición 1
Mastermind 1

Archive · View All
June 2012 5
November 2012 3
May 2012 3
December 2012 2
August 2012 2
July 2012 2
January 2013 1

SQL Server en Castellano

Trigger que crea Triggers

Jul 6 2012 2:46AM by Geri Reshef   

Supongamos que tenemos una tabla llamada T_Try001 que contiene una lista que no debe cambiarse generalmente (por ejemplo- definiciones del sistema, lista de sucursales, lista de papeles..), queremos saber cuando la tabla ha sido actualizada, y por lo tanto creemos un Trigger que actualize una tabla de registro llamada T_Log.
No voy a mostrar un ejemplo completo con todas las opciones disponibles, de lo contrario voy a optar por un ejemplo minimalista y los que quieran – pueden expandirla:

Use tempdb;
go
 
Create Table T_Try001(I Int);
 
Create Table T_Log(ID Int Identity,
                   Tbl Sysname,
                   Dt DateTime Default GetDate());
 
Create Trigger TR_Try001 
       On T_Try001
       After Insert, Update, Delete As
Insert
Into   T_Log(Tbl)
Select 'T_Try001';
Go

y añadiremos una fila a la tabla T_Try001 y virificar que el sistema funciona:

Select * From T_Try001;

Select * From T_Log;

clip_image002

Una nueva fila ha sido insertada a tabla T_Try001, y la tabla de registro T_Log ha sido.
Hasta aquí – tenemos un ejemplo simple de como utilizar un Trigger para documentar los cambios de los datos de una tabla a otra tabla de registro distinta.
El problema es que hay muchas tablas parecidas a T_Try001 y en cada una debemos crear un Trigger cuando la construyamos.. Esta no es una misión imposible y hay muchas circunstancias en las cuales debemos cumplir con los procedimientos, pero si no queremos gastar tiempo podemos crear un Trigger en el nivel de la base de datos que crea un nuevo Trigger (en nivel de la tabla) una vez que una nueva tabla llamada T_Try… ha sido creada:

Create  Trigger TriggersGenerator
        On Database
        For Create_Table As
Declare @S Varchar(Max),
        @I1 Int,
        @I2 Int,
        @Tbl Sysname,
        @SQL Varchar(Max);
 
Select  @S=EventData().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','Varchar(Max)')
Select  @I1=CharIndex('Create',@S);
Select  @I2=CharIndex('(',@S,@I1);
Select  @Tbl=LTrim(RTrim(Replace(Replace(SubString(@S,@I1,@I2-@I1),'Create',''),'Table',''))); 
 
--Extraeremos el nombre de la tabla
If @Tbl Like 'T_Try[0123456789][0123456789][0123456789]' --T_Try & 3 digitos
Begin
Select @SQL='Create Trigger '+IsNull(Stuff(@Tbl,1,1,'TR'),'Null')
            +Char(13)+' On '+@Tbl
            +Char(13)+' After Insert, Update, Delete As'
            +Char(13)+'Insert'
            +Char(13)+'Into T_Log(Tbl)'
            +Char(13)+'Select '''+IsNull(@Tbl,'Null')+''';'
Print @SQL;
Exec(@SQL);
End

Ahora crearemos una nueva tabla llamada T_Try002, le insertaremos una nueva fila, y si la tabla de registro se actualiza- quiere decir que un nuevo Trigger ha sido creado:

Create Table T_Try002(I Int);
 
Insert
Into   T_Try002
Select 27;
 
Select * From T_Try002;
 
Select * From T_Log;

clip_image004

Por supuesto si creamos tablas que se llaman T_Tryabc (mientras abc no son tres digitos) – el Trigger no se creara con la tabla, según la condición en el Trigger principal.
Finalmente quitaremos los objetos que hemos creado antes de que el administrador del systema se de cuenta de que le hemos inflado la base de datos tempdb:

Drop Trigger TriggersGenerator On Database;
Drop Table T_Try001;
Drop Table T_Try002;
Drop Table T_Log;

Tags: 


Geri Reshef
139 · 1% · 354
1
 
0
Lifesaver
 
0
Refreshed
 
0
Learned
 
0
Incorrect



Submit

Your Comment


Sign Up or Login to post a comment.

"Trigger que crea Triggers" rated 5 out of 5 by 1 readers
Trigger que crea Triggers , 5.0 out of 5 based on 1 ratings
    Copyright © Rivera Informatic Private Ltd Contact us      Privacy Policy      Terms of use      Report Abuse      Advertising      [ZULU1097]