Os bancos de dados geralmente são muito personalizáveis com vários tipos de dados e comprimentos personalizados.
Surpreende-me, pois tento procurar a sintaxe para usar unsigned int
tipos que não estão disponíveis no PostgreSQL e no MS SQL Server. MySQL e Oracle parecem.
Isso parece uma omissão gritante da parte deles - a próxima melhor opção de desempenho é um long/bigint (inteiro de 8 bytes), mas pode ser completamente desnecessário! Alguém sabe por que eles escolheriam não incluir o suporte nativo sem assinatura?
Jim Hogg, da Microsoft, respondeu a esse problema com o seguinte:
Fonte: Microsoft Connect
Eu acrescentaria significativamente à lista de profissionais e reiteraria que seu mecanismo SQL já está fazendo coisas MUITO mais complexas do que isso e, portanto, sua equipe pode lidar com a complexidade adicional. Embora eu não concorde com a soma, é por isso que o SQL Server não oferece suporte a tipos não assinados .
O link Connect foi postado originalmente por Martin Smith nos comentários da pergunta.
Eu sei que este tópico é muito antigo; o OP mencionou a necessidade de unsigned int por provavelmente um dos dois motivos.
Isso também me deixou perplexo anteriormente, minha solução para (1) era usar visualizações e SPs para garantir que o banco de dados armazenasse o valor menor, mas que a representação sempre se ajustasse a ele - não é o ideal, mas a economia de espaço compensa o custo da CPU ciclos.
Para (2) eu simplesmente sempre iniciei minha semente de identidade no maior número negativo -32768 para um smallint - ainda não é o ideal, mas funciona e dobra o espaço de chave disponível em comparação com o contador tradicional de 1.