DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Transações envolvendo DDL no SQL Server 2005

Veja neste artigo como efetuar transições envolvendo DDL no SQL Server 2005.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

Por Reydeval Rocha

 

 

Olá pessoal!!!

 

Hoje trataremos de um tema muito interessante: transações envolvendo instruções DDL – Data Definition Language.

 

Introdução

 

Sabemos que transações são unidades lógicas de trabalho, ou seja, todas as instruções que compõem o bloco são efetivadas ou nenhuma delas é efetivada. Esse conceito garante a consistência e integridade dos dados. O interessante é que no SQL Server as transações não funcionam apenas com instruções DML, mas também com instruções DDL. Vejamos os exemplos abaixo que ilustram a utilização de transações envolvendo comandos DDL.

 

Usando transações com DDL

 

--CENARIO1-------------------------------------------------

--Transação com instruções DDL

--A instrução insert causa erro de integridade referencial,

--acarretando em rollback em TODAS as instruções.

-----------------------------------------------------------

begin tran

 

     create table tb_mae(codigo     int identity,

                        campo1    char(1))    

 

 

      alter table tb_mae add constraint pk_mae primary key(codigo) 

 

      create table tb_filha( codigo    int identity,

                             campo1  char(1),

                             mae        int)   

 

      alter table tb_filha add constraint pk_filha primary key(codigo)     

 

      insert into tb_filha(campo1,mae)

            values ('S',1)

 

      alter table tb_filha add constraint fk_mae_filha

            foreign key(mae) references tb_mae(codigo)  

 

      if @@error <> 0

         rollback tran

      else

         commit

 

select * from tb_mae

 

Observem a mensagem ao executar os selects acima:

Msg 208, Level 16, State 1, Line 1

Invalid object name 'tb_mae'.

Isso significa que o SQL Server fez um rollback nas instruções anteriores, inclusive, nos creates table.

 

--CENARIO2-------------------------------------------------

--Transação com instruções DDL

--A instrução insert não causa erro de integridade referencial,

--acarretando em commit na transação.

-----------------------------------------------------------

drop table tb_mae

drop table tb_filha

 

begin tran

 

    create table tb_mae(codigo      int identity,

                        campo1             char(1))    

 

 

      alter table tb_mae add constraint pk_mae primary key(codigo)

 

      insert into tb_mae(campo1)

            values ('A')        

 

      create table tb_filha( codigo int identity,

                             campo1    char(1),

                             mae       int)     

 

      alter table tb_filha add constraint pk_filha primary key(codigo)         

 

      alter table tb_filha add constraint fk_mae_filha

            foreign key(mae) references tb_mae(codigo)

 

      insert into tb_filha(campo1,mae)

            values ('S',1)    

 

      if @@error <> 0

         rollback tran

      else

         commit

 

 

Conclusão

 

Mostramos de rápida que é possível utilizar transações com instruções DDL da mesma forma que se utiliza transações com instruções DML. Até o próximo artigo!

 

 


Reydeval Rocha
Formação Acadêmica: Sou graduado em Informática na Universidade Católica do Salvador e Especialista em Sistemas Distribuídos pela Universidade Federal da Bahia. Possuo certificação em Administração de bancos de dados SQLServer 2000, Implementação de bancos de dados SQLServer 2000 e em Desenvolviment...
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03