Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cesão

int ou uniqueidentifier?

Recommended Posts

olá pessoal,

 

sou novato no SQL Server e instalei o 2005 aqui... costumava usar o Access...

 

No Access existe um data type chamado Autonumeração... não encontrei nada parecido no SQL Server, mas tbm dei uma pesquisada e vi que existem pessoas que no lugar usam o uniqueidentifier e tem pessoas que usam o int...

 

gostaria de saber a diferença entre os dois e como seria a aplicação de cada um deles para gerar IDs sempre diferentes um do outro e para que quando eu for usar um SELECT no meu site, eu possa ordenar os registros por ASC ou DESC...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cesão,

 

No monento da criação da tabela existe uma propriedade chamada "IDENTITY" que se aplica a colunas numéricas, geralmente baseadas em tipos inteiros (int ou smallint). Esta propriedade é que define que a coluna será auto-incrementada pelo próprio sql-server.

 

Por exemplo...

 

CREATE TABLE #Tabela(  Sequencial     INT IDENTITY (1,1),  InteiroSimples INT       ,  SmallSimples   SMALLINT) ON [PRIMARY]goinsert #Tabela (InteiroSimples, SmallSimples) values (500, 5)insert #Tabela (InteiroSimples, SmallSimples) values (1500, 50)goselect * from #TabelagoRetorna...Sequencial  InteiroSimples SmallSimples ----------- -------------- ------------ 1           500            52           1500           50

Neste exemplo :

 

> A coluna "Sequencial" foi definida como inteiro, com tratamento de auto-incremento de uma unidade a partir do número 1 (IDENTITY (1,1))

> A coluna "InteiroSimples" é um inteiro sem auto-incremento

> a coluna "SmallSimples" é um smallint (também sem auto-incremento)

> No insert não é preciso fazer referência à coluna "Sequencial", pois o sql server "cuida" dela.

 

Se alterarmos a mesma estrutura, para :

 

CREATE TABLE #Tabela(  Sequencial     INT IDENTITY (8,2),  InteiroSimples INT       ,  SmallSimples   SMALLINT) ON [PRIMARY]goinsert #Tabela (InteiroSimples, SmallSimples) values (500, 5)insert #Tabela (InteiroSimples, SmallSimples) values (1500, 50)goselect * from #TabelagoResulta...Sequencial  InteiroSimples SmallSimples ----------- -------------- ------------ 8           500            510          1500           50

Ou seja... definimos que o sequencial começa no valor "8" com incremento de "2".

 

Não têm muito erro nisto... Beleza ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.