日期:2014-05-17  浏览次数:20680 次

主键更新问题
SSH中我创建一个学生表,以学号为主键,加入我插入了一条学生的数据,SSH中更新学号时发生异常,信息如下:Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1。是不是SSH不能直接更新主键,只能先删除,再插入一条主键更新的数据?是不是只能学生表用自增列作为主键,这样可以随意更改学号?有没有什么办法可以直接更新主键?

------解决方案--------------------
主键是一条记录的标识符,而不应具有业务含义,这是数据表设计最重要的原则之一。
------解决方案--------------------
经常会根据主键进行查询,主键确定了记录的唯一性,如果经常变换,在增加个id作为主键
------解决方案--------------------
主键是唯一的,不可更改的。
想要更改学号的话,还是不要把它作为主键吧。