У меня есть таблица, в которой я хочу, чтобы обновить значение один столбец:Update ошибка типа же колонке
UPDATE t1
SET [Value] = t2.[Value]
FROM table1 AS t1
INNER JOIN table2 AS t2
ON (t1.ID = t2.ID)
table1 (таблица) и table2 (вид) идентичны по структуре.
Когда я запускаю следующее обновление выше я получаю:
Msg 8115, Level 16, State 7, Line 1
Arithmetic overflow error converting numeric to data type numeric.
The statement has been terminated.
Я проверил, если значения Колума различны, выполнив следующий запрос:
SELECT
c.name 'Column Name',
t.Name 'Data type',
c.max_length 'Max Length',
c.precision ,
c.scale ,
c.is_nullable,
ISNULL(i.is_primary_key, 0) 'Primary Key'
FROM
sys.columns c
INNER JOIN
sys.types t ON c.user_type_id = t.user_type_id
LEFT OUTER JOIN
sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id
LEFT OUTER JOIN
sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
WHERE
c.object_id = OBJECT_ID('table1') --and the same for table2
Получения же типа данных, максимальную длину и т. д. с одинаковыми результатами.
Так почему я получаю эту ошибку?
Я проверил NUMERIC_ROUNDABORT Но не очень люблю об этом ... Любые другие решения?
Есть ли триггеры на таблицах? Эта ошибка кажется, что вы выполняете математическую операцию на двух численных и переполняющих числовых. –
Возможно, я ошибаюсь, но где ваша таблица1 и таблица2? ваш select с 'c.object_id = OBJECT_ID ('table1')' просто выбирает что-то с object_id равным table1, но он не показывает нам структуру таблицы1!? Я ошибаюсь? может быть, вы имеете в виду, что этот выбор из таблицы 'sys' показывает структуру на вашем экране, но мы не можем видеть, что – Alex