Почему я получаю арифметическую ошибку переполнения при вставке числа bigint в столбец bigint? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь вставить число в столбец.Тип данных столбца BIGINT, и я почти уверен, что мое число не превышает максимальное значение BIGINT, но все равно я получаю

Msg 8115, Level 16, State 2, Line 40
Arithmetic overflow error converting expression to data type int.
The statement has been terminated.

Моя недавняя активность заключалась в том, чтобы изменить тип данных этого столбца с INT на BIGINT,Я думаю, что где-то внутри мой столбец по-прежнему определяется как INT.

Вот мой сценарий.

Insert into Customer(Cust_ID)
Select 2150000000

Тип данных столбца Cust_ID имеет BIGINT в конструкторе.Это также PRIMARY_KEY и многие таблицы ссылаются на него.

РЕДАКТИРОВАТЬ: Вот некоторые из сценариев миграции

DROP TABLE dbo.Customer
GO
EXECUTE sp_rename N'dbo.Tmp_Customer', N'Customer', 'OBJECT' 
GO

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

ОК. Я уже нашел ответ. Моя таблица имеет пользовательские ограничения, которые вызывают скалярные функции, для которых требуется параметр INT.

Изменение параметра всех этих функций на BIGINT решает проблему.

0 голосов
/ 24 апреля 2019

Вы получаете ошибку , а не из-за попытки вставить 2150000000 в Customer.Cust_ID.

Если вы попытаетесь вставить очень большое число в столбец bigint, сообщение об ошибке будет выглядеть так:

Arithmetic overflow error converting expression to data type bigint.
The statement has been terminated.

В вашем сообщении об ошибке упоминается data type int, а не bigint.

Вы не показали свой полный сценарий. Проблема в строке 40 где-то.

...