{"id":1431,"date":"2020-05-21T15:06:47","date_gmt":"2020-05-21T15:06:47","guid":{"rendered":"http:\/\/manualsqlserver.com\/?p=1431"},"modified":"2020-05-21T15:06:48","modified_gmt":"2020-05-21T15:06:48","slug":"triggers-activar-y-desactivar","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=1431","title":{"rendered":"Triggers Activar y desactivar"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"203\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Triggers_ActivarDesactivar_D.png\" alt=\"\" class=\"wp-image-1430\"\/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Triggers en SQL Server &#8211; Activar y Desactivar<\/strong><\/p>\n\n\n\n<p>Este art\u00edculo muestra <strong>como activar o desactivar un Trigger en SQL Server<\/strong>, los triggers DML son procedimientos que se disparan cuando en una tabla se realizan las instrucciones Insert, Update o Delete. Para mayor informaci\u00f3n <a href=\"https:\/\/manualsqlserver.com\/?p=385\">Ver Triggers<\/a><br><strong>Desactivar el Trigger<\/strong><br>Disable Trigger NombreTrigger on Tabla\/Vista<br><strong>Activar el Trigger<\/strong><br>Enable Trigger NombreTrigger on Tabla\/Vista<br>Se puede eliminar un Trigger usando Drop Trigger NombreTrigger<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"has-medium-font-size\"><strong>Ejercicio<\/strong><\/p>\n\n\n\n<p>Usando la base de datos Northwind<br>use Northwind<br>go<br><strong>Crear un trigger para que se dispare cuando se actualiza una Region<\/strong><br>Create trigger trRegionActualiza on<br>Region for update<br>As<br>Begin<br>Print &#8216;Se actualizaron los datos&#8217;<br>End<br>go<br>Al actualizar los datos de una regi\u00f3n se dispara el trigger, mostrando el<br>mensaje.<br>Primero mostramos los registros para actualizar uno de ellos, el registro<br>con c\u00f3digo 4 se cambiar\u00e1 la descripci\u00f3n por Sur.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Triggers_ActivarDesactivar_01.png\" alt=\"\" class=\"wp-image-1428\" width=\"599\" height=\"244\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Triggers_ActivarDesactivar_01.png 349w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Triggers_ActivarDesactivar_01-300x122.png 300w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><\/figure><\/div>\n\n\n\n<p>select  *  from Region<br>go<br>Actualizar Region<br>update Region set RegionDescription = &#8216;Sur&#8217;<br>where RegionID = 4<br>go<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Triggers_ActivarDesactivar_02.png\" alt=\"\" class=\"wp-image-1429\" width=\"718\" height=\"351\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Triggers_ActivarDesactivar_02.png 572w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Triggers_ActivarDesactivar_02-300x147.png 300w\" sizes=\"auto, (max-width: 718px) 100vw, 718px\" \/><\/figure><\/div>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><strong>Crear un trigger para Region que no permita insertar o modificar una regi\u00f3n con la descripci\u00f3n de una regi\u00f3n existente.<br><\/strong>Create trigger trRegionInsertaModificaSinDuplicado<br>on Region for Insert, Update<br>As<br>Begin &#8212; Inicio del Trigger<br>&#8212; Contar la cantidad de registros con la misma descripci\u00f3n<br>if (select Count(Region.RegionID) from inserted, Region<br>where inserted.RegionDescription = Region.RegionDescription)>1<br>Begin<br>Rollback transaction &#8212; Anula la inserci\u00f3n o actualizaci\u00f3n<br>Print &#8216;No se realiz\u00f3 la transacci\u00f3n&#8217;<br>End<br>Else<br>Begin<br>Print &#8216;Se realiz\u00f3 la inserci\u00f3n o modificaci\u00f3n\u2026&#8217;<br>End<br>End &#8212; Final del Trigger<br>go<\/p>\n\n\n\n<p><strong>Ver las regiones<\/strong><br>select * from Region<br>go<br><strong>Insertar regiones<\/strong><br>insert into Region values (25,&#8217;Ica&#8217;)<br>insert into Region values (34,&#8217;Piura&#8217;)<br>insert into Region values (87,&#8217;La Libertad&#8217;)<br>insert into Region values (88,&#8217;Tumbes&#8217;)<br>go<\/p>\n\n\n\n<p><strong>Insertar una regi\u00f3n con la misma descripci\u00f3n de una existente (Ica), obviamente con un c\u00f3digo diferente.<\/strong> La operaci\u00f3n no se realiza por el Triggers creado trRegionInsertaModificaSinDuplicado<br>insert into Region values (255,&#8217;Ica&#8217;)<br>go<\/p>\n\n\n\n<p><strong>Crear un trigger en Region que no permita borrar mas de un registro<\/strong><br>Create trigger trRegionBorrarUnRegistro on Region for Delete<br>As<br>Begin<br>If (Select Count(*) from deleted) > 1<br>Begin<br>Rollback transaction<br>Print &#8216;No se puede borrar mas de un registro\u2026&#8217;<br>End<br>End<br>go<\/p>\n\n\n\n<p>Ver los registros de Region<br>select * from Region<br>go<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Triggers_ActivarDesactivar_03.png\" alt=\"\" class=\"wp-image-1432\" width=\"487\" height=\"424\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Triggers_ActivarDesactivar_03.png 349w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Triggers_ActivarDesactivar_03-300x261.png 300w\" sizes=\"auto, (max-width: 487px) 100vw, 487px\" \/><\/figure><\/div>\n\n\n\n<p>Eliminar un registro de Region<br>delete Region where RegionID = 25<br>go<\/p>\n\n\n\n<p>Eliminar varios registros<br>delete Region where RegionID in (34,87,88)<br>go<br>\/* Mensaje<br>No se puede borrar mas de un registro\u2026<br>Mens. 3609, Nivel 16, Estado 1, L\u00ednea 80<br>La transacci\u00f3n termin\u00f3 en el desencadenador. Se anul\u00f3 el lote.<br>*\/<br>Si se debe eliminar los registros, hay que desactivar o eliminar el Trigger<br><\/p>\n\n\n\n<p><strong>Desactivar el Trigger<\/strong><br>Disable Trigger NombreTrigger on Tabla\/Vista<\/p>\n\n\n\n<p><strong>Activar el Trigger<\/strong><br>Enable Trigger NombreTrigger on Tabla\/Vista<\/p>\n\n\n\n<p><strong>Para borrar las regiones con c\u00f3digos 34,87,88<br>Desactivar el Trigger trRegionBorrarUnRegistro, borrar los registros y activar el Trigger<br><\/strong>Disable Trigger trRegionBorrarUnRegistro on Region<br>go<br>delete Region where RegionID in (34,87,88)<br>go<br>Enable Trigger trRegionBorrarUnRegistro on Region<br>go<br>&#8212; Ver los registros<br>select * from Region<br>go<\/p>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Triggers en SQL Server &#8211; Activar y Desactivar Este art\u00edculo muestra como activar o desactivar un Trigger en SQL Server, los triggers DML son procedimientos que se disparan cuando en una tabla se realizan las instrucciones Insert, Update o Delete. Para mayor informaci\u00f3n Ver TriggersDesactivar el TriggerDisable Trigger NombreTrigger on Tabla\/VistaActivar el TriggerEnable Trigger NombreTrigger &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=1431\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1430,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[143],"tags":[145,59],"class_list":["post-1431","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-triggersql","tag-create-trigger","tag-triggers","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1431"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1431\/revisions"}],"predecessor-version":[{"id":1433,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1431\/revisions\/1433"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1430"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}