请教各位,我写了个数据库同步工具。前几天运行正常,但是数据更新时却爆出异常,反复查看都没找到问题。请大家帮帮忙,给我分析下问题所在。谢谢
更新语句如下:
update tivr_pri_info set old=33, big_team_code= (select team_code from tivrteam where team_name ='二') , condemn_expire = 10.02, is_valid = 1, man_type_code=1 where pri_no = 101001252
错误记录如下:System.Data.SqlClient.SqlException (0x80131904): varchar 值 '4444444444' 的转换溢出了 int 列。超出了最大整数值。
语句已终止。
在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
在 JGtoHJ.JGToHJ.backgroundWorker_trans_DoWork(Object sender, DoWorkEventArgs e)
------解决方案--------------------
错误这么明显:varchar 值 '4444444444' 的转换溢出了 int 列
你都不自己分析一下。
update tivr_pri_info
set old=33, big_team_code= (select team_code from tivrteam where team_name ='二')
, condemn_expire = 10.02, is_valid = 1, man_type_code=1
where pri_no = 101001252
但是,这个语句也有问题:
big_team_code= (select team_code from tivrteam where team_name ='二')
1. 括号里的select语句的tivrteam表没有与外表tivr_pri_info有关联
2. 就算是在关联,可能是多个值,存在多个值就会报错
应该这样:
update tivr_pri_info