Sie sind auf Seite 1von 5

GUIA PARA CREACIN DE TRIGGERS EN SQL-SERVER

Se pueden crear y administrar los desencadenadores de cada tabla desde el Administrador


Corporativo. Para ello, una vez posicionado sobre la tabla en que se quiere crear o modificar un
desencadenador, se accede al men pulsando el botn derecho del ratn.
De esta forma slo hay que especificar el nombre del desencadenador, la tabla en la que est y
sobre la que acta, el motivo por el que se dispara !insercin, actualizacin o borrado", y la
secuencia de acciones pro#ramadas.
Sintaxis

CREATE TRIGGER nombreDesencadenador
ON tabla
[WITH ENCRYPTION]
{
{FOR { [DELETE] [,] [INSERT] [,] [UPDATE] }
[WITH APPEND]
[NOT FOR REPLICATION]
AS
instruccinSQL [...n]
}
|
{FOR { [INSERT] [,] [UPDATE] }
[WITH APPEND]
[NOT FOR REPLICATION]
AS
{ IF UPDATE (columna)
[{AND | OR} UPDATE (columna)]
[...n]
| IF (COLUMNS_UPDATED() {operadorNivelBit} mscaraBitsActuali!ada)
{ operadorComparacin} mscaraBitsColumna [...n]
}
instruccinSQL [...n]
}
}

Ejemplo:

El si!i"#$" %"s"#&'%"#'%() %" "*"+,l( i+,)i+" !# +"#s'*" "# "l &li"#$" &!'#%( 'l!i"# i#$"#$'
')"') ( &'+-i') %'$(s "# l' $'-l' $i$l"s %" l' -'s" %" %'$(s P!-s.

USE ,!-s
IF E.ISTS (SELECT #'+" FROM s/s(-*"&$s
WHERE #'+" 0 1)"+i#%")1 AND $/," 0 1TR1)
DROP TRI22ER )"+i#%")
2O
CREATE TRI22ER )"+i#%")
ON $i$l"s
FOR INSERT3 UPDATE
AS RAISERROR (455563 783 75)
2O
Otro Ejemplo de un trigger asociado a la tabla employee de la BD Pubs
$% &'()C*+$D!,dbo.employee+insupd," $S -&* -.//
')0$-
D1&P *1$00)1 dbo.employee+insupd
$% &'()C*+$D!,dbo.employee+insupd," $S -&* -.//
P1$-* ,222 %A$/)D D1&PP$-0 *1$00)1 dbo.employee+insupd 333,
)/S)
P1$-* ,222 D1&PP)D *1$00)1 dbo.employee+insupd 333,
)-D
#o
C1)A*) *1$00)1 employee+insupd
&- employee
%&1 insert, .PDA*)
AS
440et the ran#e of level for this 5ob type from the 5obs table.
declare 6min+lvl tinyint,
6ma7+lvl tinyint,
6emp+lvl tinyint,
65ob+id smallint
select 6min+lvl 8 min+lvl,
6ma7+lvl 8 ma7+lvl,
6emp+lvl 8 i.5ob+lvl,
65ob+id 8 i.5ob+id
from employee e,
5obs 5,
inserted $ 444 *abla *emporal de S9/ en donde se almacenan los valores a insertar
:here e.emp+id 8 i.emp+id
A-D i.5ob+id 8 5.5ob+id
$% !65ob+id 8 ;" and !6emp+lvl 23 ;<"
be#in
raiserror !,(ob id ; e7pects the default level of ;<.,,;=,;"
1&//'AC> *1A-SAC*$&-
end
)/S)
$% -&* !6emp+lvl ')*?))- 6min+lvl A-D 6ma7+lvl"
be#in
raiserror !,*he level for 5ob+id@Ad should be bet:een Ad and Ad.,,
;=, ;, 65ob+id, 6min+lvl, 6ma7+lvl"
1&//'AC> *1A-SAC*$&-
end
#o
$% &'()C*+$D!,dbo.employee+insupd," $S -&* -.//
P1$-* ,222 C1)A*)D *1$00)1 dbo.employee+insupd 333,
)/S)
P1$-* ,222 %A$/)D C1)A*$-0 *1$00)1 dbo.employee+insupd 333,
#o
Tipo de daos
/a inte#ridad es una propiedad bsica de las bases de datos. )l tipo ms bsico de inte#ridad
es la definicin del tipos de datos que se puede almacenar en cada columna. )sto no solo
restrin#e los BcaracteresB que se pueden almacenar en cada columna, sino que tambiCn
proporciona a S9/ Server un conocimiento bsico sobre la semntica de los datos.
Se debe seleccionar ciudadosamente los tipos de datos a emplear en una tabla. /os tipos de
datos que se seleccionen tienen implicaciones en cuanto a la utilizacin del espacio, el
rendimiento, y otras cuestiones relativas a su sistema. S9/ Server permite cambiar los tipos de
datos de las tablas e7istentes, siempre que sea posible una conversin implDcita.
Tipo de Datos Nombre Caractersticas
Caracteres char Longitud fija
Caracteres nchar Longitud fija Unicode
Caracteres varchar Longitud variable
Caracteres nvarchar Longitud variable Unicode
Caracteres varbinary Binario
Caracteres image
Para objetos binarios (como imgenes)
de hastas 2 GB or fila
Caracteres timestam
!ello de tiemo" !#lo uede haber una
columna $imestam or tabla"
%echa datetime Para almacenar fechas y horas
L#gico bit
&um'rico int ( byte) rango desde * hasta 2++
&um'rico smallint
2 bytes) rango desde ,-2"./0 hasta
-2"./0
&um'rico tinyint
1 bytes) rango desde ,2"(1."10-)/1.
hasta 2"(1."10-)/1.
&um'rico float
hasta (+ d2gitos (,().34-*0 hasta
().34-*0)
&um'rico real
hasta . d2gitos (,-)1*4-0 hasta
-)1*4-0)
&um'rico numeric 45acto
&um'rico decimal 45acto
&um'rico money
0 bytes (,322"--."2*-"/0+"1.. hasta
322"--."2*-"/0+"1..)
&um'rico smallmoney
1 bytes (,2(1".10)-/1 hasta
2(1".10)-/1)
!u"#io"es
De Cade"a
Permiten manipular y evaluar cadenas de caracteres, como CEA1, D$%%)1)-C), /)-,
/*1$F, 1)P/AC), 1)P/$CA*), 1)G)1S), 1*1$F, SPAC), S*1, etc. Ger e5emplos.
$aem%i#as
1ealizan clculos basndose en valores de entrada, y devuelven un valor numCrico como A'S
!valor absoluto", C&S !coseno", /&0 !lo#aritmo", P$ !constante pi", P&?)1 !potencia", S91
!raDz cuadrada", etc. Ger e5emplos.
!e#&a
Permiten realizar operaciones sobre fechas, formatearlas, calcular diferencias de fechas, etc.
0)*DA*), DA*)D$%%, etc. Ger e5emplos.
De A'(e'a#i)"
Permiten obtener valores a#re#ados en las consultas@ AG0 !media aritmCtica", C&.-* !total
de re#istros", FAH !valor m7imo", F$- !valor mDnimo", GA1 !varianza", etc.
)5emplos
L4&(hola) 1
64PL7C8$4 (hola) -) holaholahola
64946!4(hola) aloh
P7( ) -)(1(+
P:;46 (2) -) 0
!<6((/) 1
G4$=8$4( ) fecha de hoy
=8$4=7%%(2**(,*-,20 2**(,*1,20) -(
Es(u#u(as de P(o'(ama#i)"
/os len#ua5es que interactan con sistemas de #estin de bases de datos se suelen clasificar
en tres cate#orDas@
Lenguajes de maniulaci#n de datos (=>L) =ata >aniulation Language)" 4stos lenguajes
tienen la osibilidad de leer y maniular los datos" 4jemlos de instaucciones de este tio son
!4L4C$) 7&!46$) =4L4$4 y UP=8$4) vistas en las lecciones anteriores"
Lenguajes de definici#n de datos (==L) =ata =efinition Language)" !irven ara crear y
modificar las estructuras de almacenamiento" 4jemlo ser2a las instrucci#n C648$4 $8BL4"
Lenguajes de control de datos (=CL) =ata Control Language)" Permiten definir ermisos ara el
acceso a datos) como G68&$) 649:?4) etc"
Pero adems *4S9/ que es el len#ua5e propio de S9/ Server, incluye otras instrucciones que
pueden resultar tiles, y que permiten pro#ramar procedimientos almacenados. )stas
instrucciones, y las estructuras que permiten construir, se presentan a continuacin.
I! *** ELSE
Admite una e7presin booleana que puede ser evaluada para proporcionar un valor true o
false. )s decir, en caso de que se cumpla una condicin, se e5ecutarn una seried e acciones.
)n caso en que no se cumpla esa condicin se e5ecutarn otro con5unto de acciones u
operaciones.
+,ILE- BREA.- C/NTINUE
/a instruccin ?E$/) permite e5ecutar un bucle mientras una determinada e7presin contine
siendo verdadera. '1)A> hace que se sal#a del bucle ?E$/), mientras que C&-*$-.) para
incondicionalmente la e5ecucin y evala de nuevo la e7presin..
RETURN
Se emplea para parar la e5ecucin del pro#rama y por tanto del procedimiento almacenado y
del desencadenador.
G/T/
ISD, e7iste una instruccin 0&*& en *ransac4S9/J. )fecta un salto a una etiqueta
determinada. )s til en la #estin de errores.
+AIT!/R
Puede utilizarse para detener la e5ecucin durante un retardo determinado !?A$*%&1 D)/AK"
o hasta un instante espoecificado !?A$*%&1 *$F)".
E0ECUTE
)5ecuta procedimientos almacenados.

Come"a(ios
Cualquiera que haya tenido que revisar o modificar al#n fra#mento de cdi#o estar de
acuerdo en la importancia que tienen los comentarios. $ncluso aunque parezca obvio quC es lo
que hace el cdi#o cuando se est escribiendo, el si#nificado no ser probablemente tan obvio,
ni siquiera para su autor, pasado al#n tiempo.
Cuando S9/ Server encuentra un comentario, no e5ecuta nada hasta el final del mismo. S9/
Server admite dos tipos de marcador de comentario@
12 Come"a(ios 21
)stos marcadores son tiles para escribir comentarios de varias lDneas. )l te7to contenido entre
el principio !LM" y fin !ML" de comentario, no ser analizado sintcticamente, compilado, ni
e5ecutado. Para los comentarios ms cortos se puede utilizar
-- Come"a(ios
S9/ Server no e5ecutar el te7to situado a continuacin de los marcadores y hasta el final de la
lDnea.

Das könnte Ihnen auch gefallen