主键重复

深入探寻mysql自增列导致主键重复问题的原因_Mysql

08-17
废话少说,进入正题.      拿到问题后,首先查看现场,发现问题表的中记录的最大值比自增列的值要大,那么很明显,当有记录进行插入时,自增列产生的值就有可能与已有的记录主键冲突,导致出错.首先想办法解决问题,通过人工调大自增列的值,保证大于表内已有的主键即可,调整后,导数据正常.问题是解决了,接下来要搞清楚问题原因,什么操作导致了这种现象的发生呢?       这里有一种可能,即业务逻辑包含更新自增主键的代码,由于mysql的update动作不会同时更新自增列值,若更新主键值比自增列大,也会导致

Oracle中的联合主键查询问题

05-13
最近要进行导数的工作,从好几张表中导入到一张表,其中数据可能重复,所以在导入之前要进行数据的比对. 方法一:我用group by having count(*)>1将重复的数据提取出来,然后进行人工比对,事实证明,有够笨的! 方法二:请教了一位资深人员,提供了一个更好的方法.就是将三个字段连接起来作为主键,进行数据是否重复的判断.这里值得注意的是某列的值可能为空,所以要赋一个空字符串过去. select * from t1 where nvl(col1,'')|| nvl(col2,'')| |

数据库主键设计之思考

02-28
主键的必要性: 有些朋友可能不提倡数据库表必须要主键,但在我的思考中,觉得每个表都应该具有主键,不管是单主键还是双主键,主键的存在就代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,本记录的修改与删除,当我们没有主键时,这些操作会变的非常麻烦. 主键的无意义性: 我强调主键不应该具有实际的意义,这可能对于一些朋友来说不太认同,比如订单表吧,会有"订单编号"字段,而这个字段呢在业务实际中本身就是应该具有唯一性,具有唯一标识记录的功能,但我是不推荐采用订

浅谈数据库设计技巧(下)

02-12
技巧|设计|数据|数据库|数据库设计 三.多用户及其权限管理的设计 开发数据库管理类的软件,不可能不考虑多用户和用户权限设置的问题.尽管目前市面上的大.中型的后台数据库系统软件都提供了多用户,以及细至某个数据库内某张表的权限设置的功能,我个人建议:一套成熟的数据库管理软件,还是应该自行设计用户管理这块功能,原因有二: 1.那些大.中型后台数据库系统软件所提供的多用户及其权限设置都是针对数据库的共有属性,并不一定能完全满足某些特例的需求: 2.不要过多的依赖后台数据库系统软件的某些特殊功能,多种大

中文Access2000速成教程--1.6 定义“主键

02-12
access|教程|速成|中文 第六讲 定义"主键" 在中文Access 2000中,可以建立一个庞大的数据信息库,而要将这些分布于不同表中的数据作为一个"库"来使用,就需要为各表建立好"主键",从而建立起一个关系型数据库系统.这种系统的特点是可以使用查询.窗体和报表快速查找数据,并能组合保存来自各个不同表中信息.如果要做到这一点,每一张表就应该包含相同的一个或一组字段,它些都是保存在表中的.每一条记录的唯一标识,即表的"主键"

查询重复记录

02-09
重复|重复记录 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_qry]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_qry]GO /*--查询重复记录的通用存储过程  可以查询出表中那些数据是重复的,这里的重复,是指除主键外重复的记录 如果表中有主键,请指定主键. 如果表中有标识字段,而且标识字段无重复,请