遇到这样一个问题,
"Microsoft.Data.SqlClient.SqlException (0x80131904): Arithmetic overflow error converting IDENTITY to data type int.
Arithmetic overflow occurred.
at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
看意思是 将标识转换为数据类型int时出现算术溢出错误。
初查数据库id没有溢出,后来看是添加插入时有个触发器,会触发另一个张表。
每添加一个新设备到设备表,会在员工设备管理表中添加每个员工的设备管理权限。
即假定员工数是3k,则每添加一个设备要添加3k个设备管理权限栏;这导致了员工设备管理权限表中的id超出了int范围;
所以一个修改是把int改为long,另一个清除掉无效栏位。