如何获取多个主键的表格中仅某个主键不同的数据?
如图我想把settletype=‘m’的修改成‘a’,但是数据库保持主键重复,应该如何处理呢...
如图 我想把settletype=‘m’的修改成‘a’,但是数据库保持主键重复,应该如何处理呢
展开
1个回答
展开全部
你知道数据库表中为什么有主键吗?
数据库表中的主键是用于唯一标识某一条记录的,本质上是一个唯一索引,但与唯一索引不同的是主键中不能包含Null。如果更新主键所包含的字段的值导致破坏了主键在整个表中的唯一性,则这个更新操作会失败。
和索引一样,主键也包含单列主键和复合主键,复合主键的存在通常都是与业务逻辑相关的。
针对你的场景,表中的主键是个复合主键,SettleType 是复合主键中的一个字段,如果把 SettleType 的值由 m 修改成 a,则可能导致主键重复,两个办法:
(1)可以事先检查这个更新是否会失败;
(2)编写存储过程,在存储过程中遍历表,先检查是否存在更新后的值,如果不存在,则进行更新,否则跳过。
更新主键还有一个潜在的风险,就是如果主键被其它表作为外键引用了,则也可能因为参照完整性被破坏而导致主键的更新操作失败。
数据库表中的主键是用于唯一标识某一条记录的,本质上是一个唯一索引,但与唯一索引不同的是主键中不能包含Null。如果更新主键所包含的字段的值导致破坏了主键在整个表中的唯一性,则这个更新操作会失败。
和索引一样,主键也包含单列主键和复合主键,复合主键的存在通常都是与业务逻辑相关的。
针对你的场景,表中的主键是个复合主键,SettleType 是复合主键中的一个字段,如果把 SettleType 的值由 m 修改成 a,则可能导致主键重复,两个办法:
(1)可以事先检查这个更新是否会失败;
(2)编写存储过程,在存储过程中遍历表,先检查是否存在更新后的值,如果不存在,则进行更新,否则跳过。
更新主键还有一个潜在的风险,就是如果主键被其它表作为外键引用了,则也可能因为参照完整性被破坏而导致主键的更新操作失败。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |