Вопрос

Я специально думаю о Unsigned int.

Вот практический пример: что вы делаете, когда ваша идентификационная колонка максимально выходит? Можно либо пойти BigInt (8 байтов хранения вместо 4) или для рефакторирования приложения для поддержки отрицательных целых чисел и даже для создания собственных правил, как указано в этот ответ; Ни один из этих вариантов не является оптимальным.

UInt было бы идеальным решением, но SQL Server не предлагает его (где MySQL делает).

Я понимаю, что беспигнированные данные дата не являются частью стандарта SQL (SQL-2003), но все еще кажется для меня пустой тратой.

В чем причина не включать их (в SQL Server или в стандарте)?

Это было полезно?

Решение

Если бы мне пришлось угадать, я бы сказал, что они пытаются избежать распространения типов. Вообще говоря, нет ничего, что не может сделать без подписного целого числа, что подписанное целое число не может сделать. Что касается случая, когда вам нужно число между 2147483648 и 4294967296, вы, вероятно, должны перейти на целое число на 8 байтов, поскольку число также в конечном итоге превысит 4294967296.

Другие советы

Для этого вы можете использовать -2,147 483 648 в качестве семян.

Identity(-2147483648, 1)

Я нашел аналогичный вопрос на Microsoft Connect.

Ответ от Джима Хогга (менеджер программы) имеет несколько профессионалов и con для добавления Unsigned Int. Основным мошенничество является правила реализации неявных конверсий типа, становятся кошмаром, чтобы получить право.

Запрос был закрыт как «не исправить».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top