LINUX.ORG.RU

Как ограничить автоматическое конвертирование типов в MSSQL?

 


0

2

Если тип колонки NVARCHAR и она содержит лишь числа, можно написать UPDATE ... WHERE колонка = 1 и это будет работать до тех пор, пока не встретится число, выходящее за пределы INT. Можно ли как-то запретить такую конвертацию, так чтобы подобные запросы всегда возвращали ошибку несоответствия типов? Необходимо заставить писателей подобных скриптов перестать так писать. Есть ли какая-то команда restrict в начале SQL скрипта, которая включает такое ограничение?

Перемещено leave из talks

★★★★★

Последнее исправление: bbk123 (всего исправлений: 2)

Ответ на: комментарий от lochness

В моём случае так делать нельзя. Большие числа, выходящие за пределы INT вполне корректны. Проблема в использовании INT литерала вместо стрингового в update скрипте.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от bbk123

Ты невозможного хочешь, в скрипте написано число, ты хочешь чтобы сервер сообразил что 99999999999999999 это число, а 999999999999999999 уже строка на том основании, что пихаешь это число в строковое поле. На фига вообще придумали это фичу, только что посмотрел в firebird это тоже есть, двадцать лет писал все что в varchar в кавычках и не знал про эту гадость.

ilovewindows ★★★★★
()
Ответ на: комментарий от ilovewindows

имхо тс хочет вполне возможного - чтобы сервер сообразил, что 1 без кавычек - это не varchar, и нефиг их тогда сравнивать.

arkhnchul ★★
()
Ответ на: комментарий от arkhnchul

Имхо, это парсер SQL вырубается, когда препарирует запрос, без кавычек - число, до типа поля даже дело не доходит, ставлю старый зонтик.

ilovewindows ★★★★★
()

нет нельзя. но можно на уровне кода, если запретить plane sql и написать генерялку sql, тогда в коде сравнить типы без проблем. я таак 10 лет назад и сделал, для этой чудо юдо базы.

vtVitus ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.