UDT – User-Defined Type

 

Além do System Data Types o SQL Server permite aos responsáveis pelo desenvolvimento do banco de dados criarem os seus próprios tipos de dados, esses são chamados de User-Defined Types (UDT).

Esse tipo de recurso pode auxiliar na padronização de desenvolvimento de objetos do banco. Por exemplo: no seu projeto de software é necessário que todos os campos de nome sejam do tipo varchar(200). Para manter o padrão neste caso, pode-se criar um tipo de dado chamado usr_nome que seja do tipo varchar(200).

Outro exemplo, queremos que todos os campos de valores monetários sejam do tipo Money e aceitem nulos. Para esse caso podemos criar um campo chamado usr_valor do tipo Money com aceitação de valores nulos.

Importante observar que se criarmos um tipo de dado esse tipo pertence ao banco em que foi criado, contudo se criarmos no banco de dados Model todos os novos bancos de dados irão receber esse novo tipo de dado.

Criando um UDT

Um User-Defined Type pode ser criado pela interface do Management Studio. Veja abaixo os passos para a criação.

1. Acessar o Management Studio;

2. Expandir os itens: Databases, AdventureWorks e Programmability;

3. Clicar com o botão direito do mouse sobre Types e acessar as opções: New e User-Defined Data Type.

Na janela New User-Defined Data Type vamos criar o usr_nome que será varchar(200). Veja a imagem abaixo.

Usando a sp_addtype

Outra maneira comum de criar tipos de dados é utilizando a stored procedure sp_addtype, os parâmetros necessários para essa criação podem ser vistos na imagem abaixo:

Para criar o segundo UDT deste post, o campo Money que permite veja o script abaixo:

sp_addtype 'usr_valor', 'money', 'null', 'dbo'  

Criando a tabela

Para utilizar o UDT vamos criar uma tabela com dois campos: nmimposto do tipo usr_nome e nrvalor do tipo usr_valor. Veja abaixo.

create table imposto (
    nmimposto usr_nome,
    nrvalor usr_valor
    )    

Excluindo um UDT

A lógica de objetos do SQL Server nos diz que não podemos excluir objetos dependentes, logo criamos uma tabela utilizando os dois tipos criados, por este motivo para excluir um tipo definido pelo usuário devemos primeiro tratar suas dependências.

Então após alterar o campo nmimposto da tabela para outro tipo de dado, podemos utilizar a stored procedure sp_droptype.

sp_droptype usr_nome

Conclusão

Finalizando, o User-Defined Type em alguns projetos pode ser de grande ajuda na padronização e manutenção. É importante lembrar que há pouca utilidade de criar-se um novo tipo de objeto se não utilizarmos em mais de uma tabela e outra analise importante é quanto às integrações que esse banco de dados irá sofrer no futuro.

Abraço, Rodrigo

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s