<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog luisph &#187; Sql Server</title>
	<atom:link href="http://blog.luisph.com/category/sql-server/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.luisph.com</link>
	<description>blog luisph - desenvolvimento, TI, projetos, negócios, gestão, liderança, internet, tecnologia, programação, notícias e etc!</description>
	<lastBuildDate>Tue, 31 Aug 2010 04:54:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>DDL Triggers</title>
		<link>http://blog.luisph.com/ddl-triggers/</link>
		<comments>http://blog.luisph.com/ddl-triggers/#comments</comments>
		<pubDate>Wed, 14 Feb 2007 21:45:00 +0000</pubDate>
		<dc:creator>Luís Fernandes</dc:creator>
				<category><![CDATA[Sql Server]]></category>

		<guid isPermaLink="false">http://luisph.com/?p=6</guid>
		<description><![CDATA[Triggers todos conhecemos, certo ? É um negocinho (quase uma store procedure ) que é executado automaticamente após alguma alteração nos dados de uma tabela ou view, maravilha! Esses Triggers são DML (Data Manipulation Language) &#8211; são disparados quando acontece um dos eventos: INSERT, UPDATE ou DELETE. Hoje vamos falar um pouco sobre uma novidade [...]]]></description>
			<content:encoded><![CDATA[<p>Triggers todos conhecemos, certo ? É um negocinho (quase uma store procedure <img src='http://blog.luisph.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) que é executado automaticamente após alguma alteração nos dados de uma tabela ou view, maravilha! Esses Triggers são DML (Data Manipulation Language) &#8211; são disparados quando acontece um dos eventos: INSERT, UPDATE ou DELETE.</p>
<p>Hoje vamos falar um pouco sobre uma novidade que veio com o MS SQL Server 2005: DDL (Data Definition Language) Triggers. A diferença entre os Triggers DML (que conhecemos), é que o tipo do evento é diferente, para os &#8220;DLL Triggers&#8221; serem disparados precisamos de eventos DLL <img src='http://blog.luisph.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Quais seriam eles ?? CREATE, DROP, ALTER, GRANT, DENY e REVOKE.</p>
<p>Falando na prática&#8230; acho que é um recurso bastante interessante quando pensamos em registro de alterações de base ou até auditorias.</p>
<p>Bom .. vamos a um exemplo:</p>
<p>- O primeiro passo é criarmos a tabela onde iremos armazenar as informações das alterações da base de dados:</p>
<p><span style="font-size:85%;"><em><span style="font-size:78%;">CREATE TABLE DatabaseLogs<br />
(<br />
LogId INT PRIMARY KEY IDENTITY(1,1)<br />
, LogDetails XML NOT NULL<br />
)</span><br />
</em></span><br />
- Agora criamos o DLL Trigger:</p>
<p><span style="font-size:85%;"><em><span style="font-size:78%;">CREATE TRIGGER LoggingDatabase<br />
ON DATABASE<br />
FOR CREATE_TABLE, DROP_TABLE AS<br />
BEGIN</span></em></span></p>
<p><em>INSERT DatabaseLogs (LogDetails)<br />
SELECT EVENTDATA()</em></p>
<p><em>END<br />
</em><br />
- Tudo pronto para o grande teste:</p>
<p><span style="font-size:85%;"><em><span style="font-size:78%;">&#8211;CRIANDO UMA TABELA QUALQUER<br />
CREATE TABLE TestingTrigger (TestId INT)<br />
&#8211;EXCLUINDO UMA TABELA QUALQUER<br />
DROP TABLE TestingTrigger<br />
</span><br />
</em></span>- Agora, vamos analisar a tabela DatabaseLogs:</p>
<p><span style="font-size:85%;"><em><span style="font-size:78%;">SELECT * FROM DatabaseLogs</span></em></span></p>
<p><a href="http://bp1.blogger.com/_lONz36WbHug/RdOPYItMqpI/AAAAAAAAAAc/Htm4TLF89e8/s1600-h/resultado_select.JPG"><img id="BLOGGER_PHOTO_ID_5031522853519665810" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" src="http://bp1.blogger.com/_lONz36WbHug/RdOPYItMqpI/AAAAAAAAAAc/Htm4TLF89e8/s400/resultado_select.JPG" border="0" alt="" /></a><br />
<BR><br />
Clicando nos detalhes de cada linha que foi gerada, podemos visualizar o seguinte:<br />
<BR><br />
1-)</p>
<p><a href="http://bp2.blogger.com/_lONz36WbHug/RdOV9YtMqrI/AAAAAAAAAAs/pr01a_jQgtI/s1600-h/xml_dt.JPG"><img id="BLOGGER_PHOTO_ID_5031530090539559602" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" src="http://bp2.blogger.com/_lONz36WbHug/RdOV9YtMqrI/AAAAAAAAAAs/pr01a_jQgtI/s400/xml_dt.JPG" border="0" alt="" /></a><br />
<BR><br />
2-)</p>
<p><a href="http://bp0.blogger.com/_lONz36WbHug/RdOV54tMqqI/AAAAAAAAAAk/Ho_eBl9p50g/s1600-h/xml_ct.JPG"><img id="BLOGGER_PHOTO_ID_5031530030410017442" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" src="http://bp0.blogger.com/_lONz36WbHug/RdOV54tMqqI/AAAAAAAAAAk/Ho_eBl9p50g/s400/xml_ct.JPG" border="0" alt="" /></a></p>
<p><BR><br />
Bacana ?? Eu achei&#8230; bem prático e simples.<br />
<BR><br />
Mais informações ?<br />
<a href="http://msdn2.microsoft.com/en-us/library/ms175941.aspx" target="_blank"><span style="font-size:100%;"><span style="font-size:100%;">http://msdn2.microsoft.com/en-us/library/ms175941.aspx</span></span></a></p>
<p>Até&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luisph.com/ddl-triggers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
