Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
1198
Assunto : SQL Server
Titulo: Impeça a criação de tabelas sem chave primária

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Na dica anterior (http://www.bufaloinfo.com.br/dicas.aspx?cod=1197) vimos como utilizar a função ObjectProperty para identificar problemas em tabelas.

Um recurso adicional que podemos utilizar são os DDL triggers. Através dos DDL triggers podemos não apenas identificar problemas quando eles já existirem, mas interceptar a criação de uma tabela sem chave primária, por exemplo, e impedir que seja criada.

Veja como fica um DLL trigger para fazer essa tarefa:

Create Trigger CheckTablePK
ON Database
FOR Create_Table,Alter_Table
As
Begin
Set nocount on
declare @EventData xml
declare @SchemaName sysname
declare @ObjectName sysname
declare @FullName varchar(100)

-- Retrieve information about the event
set @EventData= EventData()
-- Retrieve the schema of the object
set @schemaName=@EventData.value('(/EVENT_INSTANCE/SchemaName)[1]','sysname')
-- Retrieve the object name
set @ObjectName= @EventData.value('(/EVENT_INSTANCE/ObjectName)[1]','sysname')
-- Build the full object name, taking care of special characters in the names
set @FullName=QUOTENAME(@SchemaName) + '.' + QUOTENAME(@ObjectName)

-- Test if the object has primary key
IF ObjectProperty(Object_ID(@FullName),'TableHasPrimaryKey')<>1
Begin
Print 'This table needs a primary key'
Rollback Tran
end
end


Esse trigger intercepta eventos de Create e Alter das tabelas, identifica se a tabela possui ou não Primary Key (utilizando ObjectProperty) e caso não possua executa um rollback na transação que está realizando a criação da tabela, impedindo que a criação (ou alteração) ocorra.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br