У меня есть БД MS SQL с различными таблицами, и одно поле, в частности, вызывает у меня горе.
Тип данных установлен на varchar(100), однако поле ограничено 60 символами.
Если я попытаюсь поместить в поле любую строку с более чем 60 символами, я получаю исключение: «Строка или двоичные данные будут усечены». Хотя строка короче, чем явно заданный тип данных, она все же выдает исключение.
Возможно, есть настройка БД, которая делает это? Что может привести к перезаписи явно заданного типа данных?
Изменить:
Триггеры не копируют значение и не вставляют его в другую таблицу, а также не используют данные. – (неверно)
Строки длиной менее 60 символов работают нормально.
Все столбцы с varchar(100) дают ту же проблему, но все остальные столбцы принимают правильные значения. Столбец varchar(10) работает нормально.
Любая строка в этой таблице выдает исключение, если я пытаюсь обновить поле строкой длиной более 60 символов.
Я пытаюсь вставить данные непосредственно в поле с помощью SQL Server Management Studio.
Нет никакой прокладки.
Ответ:
Была вторая таблица, в которой для столбца было установлено значение 60. Триггер обновления вызвал хранимую процедуру, которая вставляет данные в «денормализованную» таблицу.
Спасибо за помощь.