CN107229651A - 唯一性约束异常的确定方法、异常处理方法及装置 - Google Patents

唯一性约束异常的确定方法、异常处理方法及装置 Download PDF

Info

Publication number
CN107229651A
CN107229651A CN201610178428.4A CN201610178428A CN107229651A CN 107229651 A CN107229651 A CN 107229651A CN 201610178428 A CN201610178428 A CN 201610178428A CN 107229651 A CN107229651 A CN 107229651A
Authority
CN
China
Prior art keywords
exception
sql statement
value
preset field
preset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610178428.4A
Other languages
English (en)
Inventor
李楠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610178428.4A priority Critical patent/CN107229651A/zh
Publication of CN107229651A publication Critical patent/CN107229651A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了唯一性约束异常的确定方法、异常处理方法及装置。所述唯一性约束异常的确定方法包括:接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;获取与所述预设表中的所述预设字段对应的表定义元数据;根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;若不存在所述完整性约束的异常,执行所述SQL语句,并将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。通过上述过程,可以避免错误地将完整性约束的异常判定为唯一性约束的异常。

Description

唯一性约束异常的确定方法、异常处理方法及装置
技术领域
本申请涉及数据库技术领域,特别涉及一种唯一性约束异常的确定方法、异常处理方法及装置。
背景技术
目前,在诸多应用场景中,存在向数据库维护的数据表插入数据的需求。例如,在资金类交易事务的场景中,为防止同一个交易事务被重复执行多次,一般可以在数据库中维护一张幂等表,当第一次处理某事务请求时,向上述幂等表中插入与该事务请求对应的唯一ID(如:交易流水号),这样,即便后续再次接收到上述事务请求,通过查询上述幂等表中是否存在上述唯一ID,即可判定该事务请求是否被处理过。
通常,上述数据表可以具有一定的约束条件,所述约束条件可以包括唯一性约束及完整性约束。所述唯一性约束(UNIQUE)用来限制表中的某些列上的数据的唯一性(不重复),而完整性约束则用来防止不符合规范的数据被插入到数据表中。所述完整性约束一般包括域完整性约束、用户定义的完整性及引用完整性约束等。以域完整性约束为例,可以包括:检查各个字段的类型是否正确,字段的值是否超出预设范围,字段的值是否非空等。由于数据表存在上述约束条件,在请求将数据插入到数据表的过程中,若所需插入的数据无法满足上述约束条件,则会导致数据无法被插入到数据表中并抛出异常。
现有技术中,存在这样一种应用场景:将在插入数据过程中抛出的异常判定为唯一性约束的异常,并采取与唯一性约束的异常对应的预设处理方式来应对这一异常。然而,上述抛出的异常除了属于数据表的唯一性约束的异常,还可能属于数据表的完整性约束的异常,这样,可能会错误地将抛出的完整性约束的异常判定为唯一性约束的异常,进而错误地采取与唯一性约束的异常对应的预设处理方式来应对这一异常。以资金交易的一种应用场景为例,假设通过幂等表中的字段a和字段b的组合,来标识向该幂等表中插入的数据的唯一性,其中,假设通过完整性约束限制上述字段a和字段b均为6位数:000000~999999,则幂等表中每行数据的标识可以是:“字段a”+“字段b”。一般在业务运行过程中,上述字段a和字段b可以是不断递增使用的。通过检查当前使用的字段b是否出现唯一性约束的异常,在出现唯一性约束的异常时,需要将上述字段a的值进行递增。比如:字段b从“999999”变化到“000000”,则显然标识“000000+000000”已经被使用过,为满足唯一性约束的条件,则需要将当前所需插入的数据的标识确定为“000001+000000”。然而,实际运行时可能存在这样一种异常:字段b从“999999”变化到“1000000”(由于字段b变化成7位,属于完整性约束的异常),此时若仍然对上述字段a的值进行递增,以应对这一异常,显然会导致向幂等表插入数据失败,进而导致资金交易业务不能正常运行。
鉴于上述问题,需要提出一种在向数据表插入数据的过程中抛出异常时,准确判定该异常是否为唯一性约束的异常的技术。
发明内容
本申请实施例的目的是提供一种唯一性约束异常的确定方法、异常处理方法及装置,用以解决上述现有技术中存在的问题。
为解决上述问题,本申请实施例提供的唯一性约束异常的确定方法、异常处理方法及装置通过如下技术方案来实现:
一种唯一性约束异常的确定方法,包括:
接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取与所述预设表中的所述预设字段对应的表定义元数据;
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
若不存在所述完整性约束的异常,执行所述SQL语句,并将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
一种唯一性约束异常的确定方法,包括:
接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
若在执行所述SQL语句时抛出异常,获取与所述预设表中的所述预设字段对应的表定义元数据;
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
若不存在所述完整性约束的异常,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
一种异常处理方法,包括:
接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取与所述预设表中的所述预设字段对应的表定义元数据;
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
若不存在所述完整性约束的异常,执行所述SQL语句,并将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常;
利用与唯一性约束的异常对应的处理方式来处理在执行所述SQL语句时抛出的异常。
一种异常处理方法,包括:
接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
若在执行所述SQL语句时抛出异常,获取与所述预设表中的所述预设字段对应的表定义元数据;
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
若不存在所述完整性约束的异常,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常;
利用与唯一性约束的异常对应的处理方式来处理在执行所述SQL语句时抛出的异常。
一种唯一性约束异常的确定装置,包括:
接收单元,用于接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取单元,用于获取与所述预设表中的所述预设字段对应的表定义元数据;
校验单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
确定单元,用于在不存在所述完整性约束的异常时,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
一种唯一性约束异常的确定装置,包括:
接收单元,用于接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取单元,用于在执行所述SQL语句时抛出异常后,获取与所述预设表中的所述预设字段对应的表定义元数据;
校验单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
确定单元,用于在不存在完整性约束的异常时,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
一种异常处理装置,包括:
接收单元,用于接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取单元,用于获取与所述预设表中的所述预设字段对应的表定义元数据;
校验单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
确定单元,用于在不存在所述完整性约束的异常时,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常;
异常处理单元,用于利用与唯一性约束的异常对应的处理方式来处理在执行所述SQL语句时抛出异常。
一种异常处理装置,包括:
接收单元,用于接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取单元,用于在执行所述SQL语句时抛出异常时,获取与所述预设表中的所述预设字段对应的表定义元数据;
校验单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
确定单元,用于在不存在完整性约束的异常时,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常;
异常处理单元,用于利用与唯一性约束的异常对应的处理方式来处理在执行所述SQL语句时抛出的异常。
由以上本申请实施例提供的技术方案可见,通过在接收到将预设字段的值插入到预设表中的SQL语句之后,获取与所述预设表中的所述预设字段对应的表定义元数据,并根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常,并在不存在完整性约束的异常的前提下,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。本申请实施例通过在执行SQL语句之前进行完整性约束的异常的校验,或在执行SQL语句的过程中发生异常后进行完整性约束的异常的校验,以在排除不存在完整性约束的异常的前提下,确定在执行SQL语句的过程中抛出的异常为唯一性约束的异常。通过上述过程,可以避免错误地将完整性约束的异常判定为唯一性约束的异常的问题。
另一方面,本申请实施例中,在确定抛出的异常为唯一性约束的异常之后,可以利用与唯一性约束的异常对应的处理方式对该异常进行处理,以使得预设字段的值能够被正确地插入到上述预设表中,进而确保业务的正常运行。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的系统架构示意图;
图2为本申请一实施例提供的用以进行完整性约束校验的装置的示意图;
图3为本申请一实施例提供的唯一性约束异常的确定方法的流程图;
图4为本申请另一实施例提供的唯一性约束异常的确定方法的流程图;
图5为本申请一实施例提供的唯一性约束异常的确定装置的模块示意图;
图6为本申请另一实施例提供的唯一性约束异常的确定装置的模块示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1是本申请实施例提供的一种示例性的系统架构。该系统用以在对网络中的事务请求进行处理的过程中,将与该事务请求对应的数据插入到数据库端的预设数据表中。其中,该系统包括终端20、应用服务器10及数据库端30。在进行事务(如:资金类交易事务)处理时,一般用户可以通过终端20向应用服务器10发送事务请求(如:携带转出方账户信息、转入方账户信息及金额的交易请求),应用服务器10在收到该事务请求时,为避免事务请求被重复执行,可以通过向数据库端30中预先维护的一张数据表中插入与当前事务请求对应的数据(如:交易流水号、转出方账户信息、转入方账户信息及金额信息等)。其中,一般地,应用服务器10可以通过生成用以将上述数据插入到预设数据表中的SQL语句(Structured Query Language,结构化查询语句),并将该SQL语句向数据库端进行发送,来实现上述数据插入过程。接下来,数据库端一般需要对上述SQL语句进行完整性约束及唯一性约束的检查,若通过检查发现上述SQL语句不存在异常,则完成上述数据插入的动作并对上述事务请求进行相应的处理(如:资金变动);反之,若检查发现上述SQL语句存在异常,则向应用服务器10反馈异常,拒绝将上述数据插入到预设数据表中并拒绝对该事务请求进行处理。
如前所述,在本申请一些场景中,需要确定数据库端抛出的异常是否为唯一性约束的异常,从而执行与唯一性约束的异常对应的处理方式。为避免错误地将完整性约束的异常判定为唯一性约束的异常,本申请实施例中可以通过对上述SQL语句进行完整性约束的异常的校验,来过滤完整性约束的异常对唯一性约束的异常的干扰。具体地,完整性约束的异常的校验工作可以通过图2所示的用以进行完整性约束校验的装置来实现。如图2所示,本申请实施例中,该校验装置可以包括流程控制总线、元数据仓储及完整性检查器。其中,上述流程控制总线用以控制完整性校验的执行流程,上述元数据仓储中的元数据分为表定义元数据、执行语句元数据及校验配置元数据。上述完整性检查器用以根据上述表定义元数据、执行语句元数据及校验配置元数据,对需要检查的数据表和SQL语句进行完整性约束的异常的检查动作,完整性检查器可以将检查得到的结果通过上述流程控制总线发出。其中,根据实际业务需求,上述完整性检查器又可以包括域完整性(Integrity constrains)检查器、自定义完整性(user defined integrity)检查器、引用完整性检查器等。值得提及的是,上述用以检查完整性约束异常的装置可以以软件和硬件相结合的形式存在于上述数据库端30。其中,可以针对所需检查的完整性约束的类型,增加或减少任意一种的完整性约束检查器。
其中,上述表定义元数据用以定义预设数据表中的各个预设字段的属性。所述预设字段的属性可以包括:预设字段的取值范围(如:100~200),预设字段的值的类型(如:限定值的类型为阿拉伯数字),预设字段的其他取值规则(如:非空),以及预设字段的值的长度等。
以幂等表为例,其建表语句(表定义元数据)如下:
其中,从表定义元数据可以看出各个字段的完整性约束条件,如:“字段a”的完整性约束条件包括:非空(not null)、值的长度有限定等。
另外,上述执行语句元数据是指数据库端接收到来自于应用服务器的SQL语句。上述校验配置元数据是指预先设定的需要进行校验的表及SQL语句的配置数据(也就是说,预先配置哪些表和哪些SQL语句属于完整性校验的对象)。举例而言,假设数据库端存在数据表x,y,z,其中,x,y属于幂等表,假设应用服务器发送的向数据表x插入数据的SQL语句是:sql1,向数据表y插入数据的SQL语句是:sql2。此时若根据业务需求,只需要对上述数据表x及相应的SQL语句进行检查,则可以在通过配置该校验配置元数据设定只对sql1进行检查。在将相应的校验配置元数据存放到数据仓储中后,数据库端在接收到各类SQL语句后,便可以直接从数据仓储中提取需要进行检查的SQL语句,并进行相应的完整性约束的异常检查。
图3为本申请一实施例提供的唯一性约束异常的确定方法的流程,其中,该方法的执行主体可以为数据库端,该方法包括如下步骤:
S101:接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中。
本申请实施例中,以上述幂等表为例,若该幂等表中的预设字段可以包括:主键id、字段a、字段b及字段c,则,向该幂等表(预设表)插入的预设字段的值可以包括上述主键id的值、字段a的值、字段b的值及字段c的值。
S102:获取与所述预设表中的所述预设字段对应的表定义元数据。
以上述幂等表为例,为了实现完整性约束的校验,数据库端需要获取与当前待校验的幂等表中的各个预设字段对应的表定义元数据。其中,对于每一个预设字段,其表定义元数据可以包括:字段的值的长度、是否非空、字段的值是否超过预设范围等。
本申请实施例中,如前所述,并不是对数据库端接收的所有SQL语句进行完整性约束的异常的校验,可以通过读取上述校验配置元数据,来判断当前接收到的SQL语句是不是为待校验的对象,若是,则将该SQL语句及相应的表定义元数据写入到缓存中进行校验。
S103:根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;若校验发现不存在完整性约束的异常,进入步骤S104。若校验发现存在完整性约束的异常,则不执行该条SQL语句并向应用服务器端反馈异常。
在获取到待校验完整性约束异常的SQL语句、及与当前待校验的预设表对应的表定义元数据之后,可以利用表定义元数据对上述SQL语句进行校验。其中,在进行校验之前,可以对相关的DAO(Data Access Object,数据访问对象)操作进行拦截。
具体地,如上所述,对于域完整性异常的校验,可以包括:校验SQL语句中需要插入的某字段的值的长度符合上述表定义元数据的长度、校验SQL语句中需要插入的某字段的值是否非空、校验SQL语句中需要插入的某字段的值字段的值是否超过预设范围等。对于用户自定义完整性异常的校验,可以例如:表中某字段的值限定为“男”或“女”,则校验SQL语句中需要插入的某字段的值是否为“男”或“女”,如不是,则存在完整性约束的异常。
S104:执行所述SQL语句,并将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
本申请实施例中,若上述完整性约束的校验包括域完整性约束的校验及用户自定义完整性约束的校验,则在不存在域完整性约束的异常及用户自定义完整性约束的异常时,执行所述SQL语句。
在排除SQL语句不存在任何完整性约束的异常之后,数据库端对该条SQL语句进行执行,以向预设表中插入预设数据。由于在先前步骤中已经排除该SQL语句存在完整性约束的异常的可能性,则如果在执行过程中仍然抛出异常,则可以确定该异常为唯一性约束的异常。
在上述图3所示的实施例中,通过在执行SQL语句进行完整性约束的异常校验(前置校验),从而在排除不存在完整性约束的异常后,确定执行SQL语句的过程中发生异常为唯一性约束的异常。通过上述过程,可以避免错误地将完整性约束的异常判定为唯一性约束的异常的问题。然而,在本申请替代的实施例中,还可以通过“后置校验”来实现。
图4为本申请另一实施例提供的唯一性约束异常的确定方法的流程,该方法包括如下步骤:
S201:接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中。
该步骤S201可以参照上述步骤S101的内容,不同之处在于:
上述步骤S201中在接收到SQL语句后,便执行该条SQL语句(以向预设表中插入预设字段的值)。
S202:若在执行所述SQL语句时抛出异常,获取与所述预设表中的所述预设字段对应的表定义元数据。
该步骤S202可以参照上述步骤S102的内容。
如前所述,在向预设表中插入预设字段的值的过程中可能会出现异常,在出现异常需要确定该异常是否为唯一性约束的异常,则可以通过“后置校验”来排除完整性约束异常的干扰。所述“后置校验”是在执行SQL语句时出现异常之后进行的。
S203:根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;若不存在,进入步骤S204。
该步骤S203可以参照上述步骤S103的内容。
S204:将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
该步骤S204可以参照上述步骤S105的内容。
在上述图4所示的实施例中,通过在执行SQL语句的过程中发生异常后进行完整性约束的异常的校验,并在排除不存在完整性约束的异常后,确定执行SQL语句的过程中发生异常为唯一性约束的异常。通过上述过程,可以避免错误地将完整性约束的异常判定为唯一性约束的异常的问题。
本申请实施例还提供一种异常处理方法,基于上述唯一性约束异常的确定方法的步骤,该异常处理方法还包括:
在确定异常为唯一性约束的异常后,利用与唯一性约束的异常对应的处理方式来处理在执行所述SQL语句时抛出异常。
在某些应用场景中,上述与唯一性约束的异常对应的处理方式可以是对某个预设字段的值进行递增。
以幂等表的一种应用场景为例,假设通过幂等表中的字段a和字段b的组合,来标识向该幂等表中插入的数据的唯一性,其中,假设通过完整性约束限制上述字段a和字段b均为6位数:000000~999999,则幂等表中每行数据的标识可以是:“字段a”+“字段b”。一般在业务运行过程中,上述字段a和字段b可以是不断递增使用的。通过检查当前使用的字段b是否出现唯一性约束的异常,在出现唯一性约束的异常时,需要将上述字段a的值进行递增。例如:在字段a为“000000”时,字段b需要从“000000”变化到“999999”并逐一被插入到上述幂等表中。在某个时刻,当字段b为“999999”时,由于字段b一般被限定为6位数,则在下一个事务请求到来时,与该事务请求对应的字段b的值会由“999999”再次变化为“000000”。此后,若通过相应的SQL语句向幂等表插入预设字段(包含字段a+字段b)的值,由于字段a:“000000“+字段b:“000000”已经被使用过,此时数据库端被刨除唯一性约束的异常,为应对这一异常,数据库端可以通过将上述字段a的值由“000000”递增为“000001”,并向上述幂等表中插入包含字段a的值:“000001”和字段b的值:“000000”的一行数据(唯一性异常被化解),业务能够正常运行。
值得一提的是,本申请其他的实施例中,在确定上述异常是否为唯一性异常之后,可以通过消息的方式通知相关人员,并由相关人员来处理上述唯一性异常。
基于上述方法,本申请实施例还提供一种基于上述方法的唯一性约束异常的确定装置及异常处理装置。其中,这些装置中包含的各单元所实现的功能与上述方法中包含的各步骤所实现的功能相同,故这些装置实施例可以参照上述各方法实施例的内容,本文不再予以赘述。
图5为本申请一实施例提供的唯一性约束异常的确定装置的模块示意图。本申请实施例中,该唯一性约束异常的确定装置包括:
接收单元110,用于接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中。
获取单元120,用于获取与预设表中的预设字段对应的表定义元数据。
校验单元130,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常。
确定单元140,用于在不存在所述完整性约束的异常时,执行所述SQL语句,并将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
本申请实施例的装置通过在执行SQL语句之前进行完整性约束的异常的校验,并在排除不存在完整性约束的异常后,确定执行SQL语句的过程中发生异常为唯一性约束的异常,从而可以避免错误地将完整性约束的异常判定为唯一性约束的异常的问题。
图6为本申请另一实施例提供的唯一性约束异常的确定装置的模块示意图。本申请实施例中,该唯一性约束异常的确定装置包括:
接收单元210,用于接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中。
确定单元220;用于在执行所述SQL语句时抛出异常时,获取与所述预设表中的所述预设字段对应的表定义元数据;
校验单元230,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
确定单元240,用于在不存在完整性约束的异常时,确定在执行所述SQL语句时抛出的异常为唯一性约束的异常。
同理,本申请实施例的装置通过在执行SQL语句的过程中发生异常后进行完整性约束的异常的校验,并在排除不存在完整性约束的异常后,确定执行SQL语句的过程中发生异常为唯一性约束的异常,从而可以避免错误地将完整性约束的异常判定为唯一性约束的异常的问题。
与上述图5对应,本申请实施例中,一种异常处理装置包括上述接收单元110、获取单元120、校验单元130、执行单元140、确定单元150,以及异常处理单元,所述异常处理单元用于利用与唯一性约束的异常对应的处理方式来处理在执行所述SQL语句时抛出异常。本申请实施例在确定抛出的异常为唯一性约束的异常后,可以利用与唯一性约束的异常对应的处理方式对该异常进行处理,以使得预设字段的值能够被正确插入到上述预设表中,进而确保业务的正常运行。
与上述图6对应,本申请实施例中,一种异常处理装置包括上述接收单元210、执行单元220、获取单元230、校验单元240、确定单元250,以及异常处理单元,所述异常处理单元用于利用与唯一性约束的异常对应的处理方式来处理在执行所述SQL语句时抛出异常。本申请实施例在确定抛出的异常为唯一性约束的异常后,可以利用与唯一性约束的异常对应的处理方式对该异常进行处理,以使得预设字段的值能够被正确插入到上述预设表中,进而确保业务的正常运行。
值得述及的是,在本文介绍的上述确定唯一性约束的异常的方法及装置中,一般可以使用Spring开源框架来作为应用系统的开发框架。而使用Spring开源框架的系统一般难以准确地捕捉上述唯一性约束的异常,本申请提出的方案可以解决使用Spring开源框架的应用系统无法准确捕捉上述唯一性约束的异常的问题。当然,本申请提出的方案还可以用以其他类型的开源框架中,本文不再予以列举。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (12)

1.一种唯一性约束异常的确定方法,其特征在于,包括:
接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取与所述预设表中的所述预设字段对应的表定义元数据;
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
若不存在所述完整性约束的异常,执行所述SQL语句,并将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
2.如权利要求1所述的方法,其特征在于,根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常,具体包括:
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在域完整性约束的异常;
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在用户自定义完整性约束的异常;
则若不存在所述完整性约束的异常,执行所述SQL语句,并将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常,具体包括:
若不存在域完整性约束的异常及用户自定义完整性约束的异常,执行所述SQL语句,并将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
3.一种唯一性约束异常的确定方法,其特征在于,包括:
接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
若在执行所述SQL语句时抛出异常,获取与所述预设表中的所述预设字段对应的表定义元数据;
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
若不存在所述完整性约束的异常,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
4.如权利要求3所述的方法,其特征在于,根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常,具体包括:
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在域完整性约束的异常;
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在用户自定义完整性约束的异常;
则若不存在,确定上述在执行所述SQL语句时抛出的异常为唯一性约束的异常,具体包括:
若不存在域完整性约束的异常及用户自定义完整性约束的异常,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
5.一种异常处理方法,其特征在于,包括:
接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取与所述预设表中的所述预设字段对应的表定义元数据;
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
若不存在所述完整性约束的异常,执行所述SQL语句,并将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常;
利用与唯一性约束的异常对应的处理方式来处理在执行所述SQL语句时抛出的异常。
6.一种异常处理方法,其特征在于,包括:
接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
若在执行所述SQL语句时抛出异常,获取与所述预设表中的所述预设字段对应的表定义元数据;
根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
若不存在所述完整性约束的异常,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常;
利用与唯一性约束的异常对应的处理方式来处理在执行所述SQL语句时抛出的异常。
7.一种唯一性约束异常的确定装置,其特征在于,包括:
接收单元,用于接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取单元,用于获取与所述预设表中的所述预设字段对应的表定义元数据;
校验单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
确定单元,用于在不存在所述完整性约束的异常时,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
8.如权利要求7所述的装置,其特征在于,所述校验单元具体包括:
域完整性校验单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在域完整性约束的异常;
用户自定义完整性约束单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在用户自定义完整性约束的异常;
则所述确定单元具体用于:
若不存在域完整性约束的异常及用户自定义完整性约束的异常,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
9.一种唯一性约束异常的确定装置,其特征在于,包括:
接收单元,用于接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取单元,用于在执行所述SQL语句时抛出异常后,获取与所述预设表中的所述预设字段对应的表定义元数据;
校验单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
确定单元,用于在不存在完整性约束的异常时,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
10.如权利要求9所述的装置,其特征在于,所述校验单元具体包括:
域完整性校验单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在域完整性约束的异常;
用户自定义完整性约束单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在用户自定义完整性约束的异常;
则所述确定单元具体用于:
若不存在域完整性约束的异常及用户自定义完整性约束的异常,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常。
11.一种异常处理装置,其特征在于,包括:
接收单元,用于接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取单元,用于获取与所述预设表中的所述预设字段对应的表定义元数据;
校验单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
确定单元,用于在不存在所述完整性约束的异常时,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常;
异常处理单元,用于利用与唯一性约束的异常对应的处理方式来处理在执行所述SQL语句时抛出异常。
12.一种异常处理装置,其特征在于,包括:
接收单元,用于接收包含预设字段的值的SQL语句;所述SQL语句用于将所述预设字段的值插入到包含所述预设字段的预设表中;
获取单元,用于在执行所述SQL语句时抛出异常时,获取与所述预设表中的所述预设字段对应的表定义元数据;
校验单元,用于根据所述表定义元数据,校验所述SQL语句中的预设字段的值是否存在完整性约束的异常;
确定单元,用于在不存在完整性约束的异常时,将在执行所述SQL语句时抛出的异常确定为唯一性约束的异常;
异常处理单元,用于利用与唯一性约束的异常对应的处理方式来处理在执行所述SQL语句时抛出的异常。
CN201610178428.4A 2016-03-25 2016-03-25 唯一性约束异常的确定方法、异常处理方法及装置 Pending CN107229651A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610178428.4A CN107229651A (zh) 2016-03-25 2016-03-25 唯一性约束异常的确定方法、异常处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610178428.4A CN107229651A (zh) 2016-03-25 2016-03-25 唯一性约束异常的确定方法、异常处理方法及装置

Publications (1)

Publication Number Publication Date
CN107229651A true CN107229651A (zh) 2017-10-03

Family

ID=59932512

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610178428.4A Pending CN107229651A (zh) 2016-03-25 2016-03-25 唯一性约束异常的确定方法、异常处理方法及装置

Country Status (1)

Country Link
CN (1) CN107229651A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110046976A (zh) * 2018-11-30 2019-07-23 阿里巴巴集团控股有限公司 对账方法和装置、服务器
CN112579635A (zh) * 2019-09-30 2021-03-30 北京国双科技有限公司 一种sql语句的优化方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5706494A (en) * 1995-02-10 1998-01-06 International Business Machines Corporation System and method for constraint checking bulk data in a database
CN101308471A (zh) * 2008-05-30 2008-11-19 华为技术有限公司 一种恢复数据的方法及装置
US20120296890A1 (en) * 2010-03-05 2012-11-22 Sandhya Sundaresan System and method for rowset inserts

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5706494A (en) * 1995-02-10 1998-01-06 International Business Machines Corporation System and method for constraint checking bulk data in a database
CN101308471A (zh) * 2008-05-30 2008-11-19 华为技术有限公司 一种恢复数据的方法及装置
US20120296890A1 (en) * 2010-03-05 2012-11-22 Sandhya Sundaresan System and method for rowset inserts

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110046976A (zh) * 2018-11-30 2019-07-23 阿里巴巴集团控股有限公司 对账方法和装置、服务器
CN110046976B (zh) * 2018-11-30 2023-08-18 创新先进技术有限公司 对账方法和装置、服务器
CN112579635A (zh) * 2019-09-30 2021-03-30 北京国双科技有限公司 一种sql语句的优化方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US10783116B2 (en) Systems and methods for managing data
US20180096360A1 (en) Method and apparatus to enforce smart contract execution hierarchy on blockchain
CN109344170B (zh) 流数据处理方法、系统、电子设备及可读存储介质
CN107633016B (zh) 数据处理方法及装置和电子设备
CN112181804B (zh) 一种参数校验方法、设备以及存储介质
CN110413507B (zh) 系统测试方法、装置、计算机设备和存储介质
CN104778123B (zh) 一种检测系统性能的方法及装置
CN110019116B (zh) 数据追溯方法、装置、数据处理设备及计算机存储介质
CN107633015A (zh) 一种数据处理方法、装置及设备
US20230244653A1 (en) Semantic compliance validation for blockchain
CN111782809A (zh) 国际收支网申数据处理方法、装置、电子设备及存储介质
CN107330572A (zh) 风控方法、装置及系统
CN107229651A (zh) 唯一性约束异常的确定方法、异常处理方法及装置
CN111092880A (zh) 一种网络流量数据提取方法及装置
CN105447707B (zh) 数据处理方法及装置
CN107832278A (zh) 一种实时扫描税务业务数据的方法及装置
US9679020B2 (en) Assigning a regulated data source ranking for data fields
CN116188020A (zh) 异常账户识别方法、装置以及存储介质
CN105989064A (zh) 一种记录信息的核对方法及装置
CN107301097A (zh) 一种调用java对象、java对象的引用地址信息的存储方法及装置
KR20200134560A (ko) 이상치 발생 여부 검출 방법, 컴퓨팅 디바이스 및 컴퓨터 판독 가능한 저장 매체
US11392486B1 (en) Multi-role, multi-user, multi-technology, configuration-driven requirements, coverage and testing automation
CN108429632B (zh) 一种业务监控方法和装置
CN106156185A (zh) 一种业务请求执行状态的查询方法、装置及系统
CN115357594A (zh) 一种基于区块链的数据模型更新方法及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200921

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200921

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20171003