对逻辑删除的SQL执行方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:19009174 阅读:53 留言:0更新日期:2018-09-22 09:02
本发明专利技术涉及对逻辑删除的SQL执行方法、装置、计算机设备和存储介质,应用于数据库技术领域。所述方法包括:获取待执行SQL语句,识别所述待执行SQL语句的操作类型;当所述操作类型为删除、更新或者查询时,根据实体类中预设的逻辑删除标志,识别待执行SQL语句针对的数据表中的逻辑删除字段;所述实体类与所述数据表之间有映射关系;根据所述逻辑删除字段生成对应的SQL操作条件,根据所述SQL操作条件更新所述待执行SQL语句,执行更新得到的SQL语句。本发明专利技术实施例解决了对逻辑删除的SQL执行结果不准确的问题的问题,简化了用户操作。

SQL execution method, device, computer equipment and storage medium for logical deletion

The invention relates to a SQL execution method, device, computer equipment and storage medium for logical deletion, and is applied to the technical field of database. The method comprises acquiring the SQL statement to be executed and identifying the operation type of the SQL statement to be executed; identifying the logical deletion field in the data table for which the SQL statement is to be executed according to the preset logical deletion flag in the entity class when the operation type is deletion, update or query; and identifying the entity class and the number thereof. There is a mapping relationship between the tables; the corresponding SQL operation conditions are generated according to the logical deletion fields, the SQL statements to be executed are updated according to the SQL operation conditions, and the updated SQL statements are executed. The embodiment of the invention solves the problem of inaccurate execution result of SQL with logical deletion and simplifies user operation.

【技术实现步骤摘要】
对逻辑删除的SQL执行方法、装置、计算机设备和存储介质
本专利技术涉及数据库
,特别是涉及基于逻辑删除的SQL(StructuredQueryLanguage,结构化查询语言,简称SQL)执行方法、装置、计算机设备和存储介质。
技术介绍
逻辑删除指的是,不真正的在数据库上执行delete操作删除数据,而是把数据的某个字段置为一个标记。同时,在数据库表里面针对该数据设置一个用于表示逻辑删除的字段(例如is_delete),如果该字段为1则表示数据被逻辑删除,如果该字段为0则表示数据未被逻辑删除。在实现本专利技术的过程中,专利技术人发现现有技术中存在如下问题:在数据被用户逻辑删除之后,使用传统的SQL语句,将难以排除该数据,导致SQL执行结果无法满足要求。
技术实现思路
基于此,有必要针对现有方式对逻辑删除的SQL执行结果不准确的问题,提供一种对逻辑删除的SQL执行方法、装置、计算机设备和存储介质。本专利技术实施例提供的方案包括:一种对逻辑删除的SQL执行方法,包括:获取待执行SQL语句,识别所述待执行SQL语句的操作类型;当所述操作类型为删除、更新或者查询时,根据实体类中预设的逻辑删除标志,识别待执行SQL语句针对的数据表中的逻辑删除字段;所述实体类与所述数据表之间有映射关系;根据所述逻辑删除字段生成对应的SQL操作条件,根据所述SQL操作条件更新所述待执行SQL语句,执行更新得到的SQL语句。在其中一个实施例中,根据实体类中预设的逻辑删除标志,识别待执行SQL语句针对的数据表中的逻辑删除字段的步骤包括:确定所述待执行SQL语句对应的实体类;检测所述实体类中预设的逻辑删除标志,根据逻辑删除标志识别数据表中的逻辑删除字段。在其中一个实施例中,还包括:若检测到所述实体类中不包含预设的逻辑删除标志,执行所述待执行SQL语句;和/或,在确定所述待执行SQL语句的操作类型的步骤之后,还包括:当待执行SQL语句的操作类型为新增操作类型时,执行所述待执行SQL语句。在其中一个实施例中,确定所述待执行SQL语句对应的实体类的步骤包括:根据预设的SQL解析器对所述待执行SQL语句进行解析,得到所述待执行SQL语句对应的语法树;遍历所述语法树的FROM节点和/或FROM节点的叶子节点,确定待执行SQL语句针对的数据表;根据实体类与数据表的映射关系,得到所述数据表对应的实体类,确定为所述待执行SQL语句对应的实体类。在其中一个实施例中,根据逻辑删除标志识别所述数据表中的逻辑删除字段的步骤包括:确定实体类中逻辑删除标志所指向的属性,根据实体类中属性与数据表中字段的映射关系,得到所述属性对应的字段,作为逻辑删除字段。在其中一个实施例中,根据所述逻辑删除字段生成对应的SQL操作条件,根据所述SQL操作条件更新所述待执行SQL语句的步骤包括:若所述操作类型为更新或者查询,则生成X.is_delete=K1的第一操作条件,在所述待执行SQL语句的where属性中增加所述第一操作条件;若所述操作类型为删除,则生成X.is_delete=K2的第二操作条件,根据所述待执行SQL语句创建一个更新类型的SQL语句,在所述更新类型的SQL语句的set属性中增加所述第二操作条件;其中,X表示待执行SQL语句指向的数据表中的数据项,is_delete表示逻辑删除字段,K1、K2表示预设的逻辑值,当X.is_delete=K1时,表示数据X未被逻辑删除,当X.is_delete=K2时,表示数据X被逻辑删除。在其中一个实施例中,还包括:创建数据表对应的实体类,在所述实体类中设置用于表示逻辑删除的属性,为该属性设置对应的逻辑删除标志。在其中一个实施例中,在所述实体类中设置用于表示逻辑删除的属性,为该属性设置对应的逻辑删除标志的步骤包括:在所述实体类中设置Boolean类型的、用于表示逻辑删除的属性,为该属设置逻辑删除标志@LogicDelete。一种对逻辑删除的SQL执行装置,包括:类型识别模块,用于获取待执行SQL语句,识别所述待执行SQL语句的操作类型;字段识别模块,用于根据实体类中预设的逻辑删除标志,识别待执行SQL语句针对的数据表中的逻辑删除字段;所述实体类与所述数据表之间有映射关系;以及,修改执行模块,用于根据所述逻辑删除字段生成对应的SQL操作条件,根据所述SQL操作条件更新所述待执行SQL语句,执行更新得到的SQL语句。在其中一个实施例中,所述字段识别模块包括:类识别单元,用于当所述操作类型为删除、更新或者查询时,确定所述待执行SQL语句对应的实体类;字段识别单元,用于检测所述实体类中预设的逻辑删除标志,根据逻辑删除标志识别数据表中的逻辑删除字段。在其中一个实施例中,还包括:第一执行模块,用于若检测到所述实体类中不包含预设的逻辑删除标志,执行所述待执行SQL语句;和/或,第二执行模块,用于当确定出所述待执行SQL语句的操作类型为新增操作类型时,执行所述待执行SQL语句。在其中一个实施例中,所述类识别单元包括:数据表识别子单元,用于根据预设的SQL解析器对所述待执行SQL语句进行解析,得到所述待执行SQL语句对应的语法树;遍历所述语法树的FROM节点和/或FROM节点的叶子节点,确定待执行SQL语句针对的数据表;类识别子单元,用于根据实体类与数据表的映射关系,得到所述数据表对应的实体类,确定为所述待执行SQL语句对应的实体类。在其中一个实施例中,所述字段识别单元包括:字段确定子单元,用于确定实体类中逻辑删除标志所指向的属性,根据实体类中属性与数据表中字段的映射关系,得到所述属性对应的字段,作为逻辑删除字段。在其中一个实施例中,所述修改执行模块包括:第一修改单元,用于若所述操作类型为更新或者查询,则生成X.is_delete=K1的第一操作条件,在所述待执行SQL语句的where属性中增加所述第一操作条件;第二修改单元,用于若所述操作类型为删除,则生成X.is_delete=K2的第二操作条件,根据所述待执行SQL语句创建一个更新类型的SQL语句,在所述更新类型的SQL语句的set属性中增加所述第二操作条件;其中,X表示待执行SQL语句指向的数据表中的数据项,is_delete表示逻辑删除字段,K1、K2表示预设的逻辑值,当X.is_delete=K1时,表示数据X未被逻辑删除,当X.is_delete=K2时,表示数据X被逻辑删除。上述对逻辑删除的SQL执行方法及装置,在获取到待执行SQL语句之后,识别所述待执行SQL语句的操作类型;当所述操作类型为删除、更新或者查询时,根据实体类中预设的逻辑删除标志识别数据表中的逻辑删除字段;根据所述逻辑删除字段生成对应的SQL操作条件,根据生成的SQL操作条件更新待执行SQL语句,进而执行更新得到的SQL语句。由此实现了自动对待执行SQL进行转换,能适应所有的SQL语句。用户在编辑SQL语句的时候,无需关注数据库中的数据是否被逻辑删除,通过常规的SQL语句,便可实现对逻辑删除的数据的SQL操作,既简化了用户的SQL操作难度,又提高的SQL操作结果的准确度。一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述对逻辑删除的SQL本文档来自技高网...
对逻辑删除的SQL执行方法、装置、计算机设备和存储介质

【技术保护点】
1.一种对逻辑删除的SQL执行方法,其特征在于,包括:获取待执行SQL语句,识别所述待执行SQL语句的操作类型;当所述操作类型为删除、更新或者查询时,根据实体类中预设的逻辑删除标志,识别待执行SQL语句针对的数据表中的逻辑删除字段;所述实体类与所述数据表之间有映射关系;根据所述逻辑删除字段生成对应的SQL操作条件,根据所述SQL操作条件更新所述待执行SQL语句,执行更新得到的SQL语句。

【技术特征摘要】
1.一种对逻辑删除的SQL执行方法,其特征在于,包括:获取待执行SQL语句,识别所述待执行SQL语句的操作类型;当所述操作类型为删除、更新或者查询时,根据实体类中预设的逻辑删除标志,识别待执行SQL语句针对的数据表中的逻辑删除字段;所述实体类与所述数据表之间有映射关系;根据所述逻辑删除字段生成对应的SQL操作条件,根据所述SQL操作条件更新所述待执行SQL语句,执行更新得到的SQL语句。2.根据权利要求1所述的对逻辑删除的SQL执行方法,其特征在于,根据实体类中预设的逻辑删除标志,识别待执行SQL语句针对的数据表中的逻辑删除字段的步骤包括:确定所述待执行SQL语句对应的实体类;检测所述实体类中预设的逻辑删除标志,根据逻辑删除标志识别数据表中的逻辑删除字段。3.根据权利要求2所述的对逻辑删除的SQL执行方法,其特征在于,还包括:若检测到所述实体类中不包含预设的逻辑删除标志,执行所述待执行SQL语句;和/或,在确定所述待执行SQL语句的操作类型的步骤之后,还包括:当待执行SQL语句的操作类型为新增操作类型时,执行所述待执行SQL语句。4.根据权利要求2所述的对逻辑删除的SQL执行方法,其特征在于,确定所述待执行SQL语句对应的实体类的步骤包括:根据预设的SQL解析器对所述待执行SQL语句进行解析,得到所述待执行SQL语句对应的语法树;遍历所述语法树的FROM节点和/或FROM节点的叶子节点,确定待执行SQL语句针对的数据表;根据实体类与数据表的映射关系,得到所述数据表对应的实体类,确定为所述待执行SQL语句对应的实体类。5.根据权利要求2所述的对逻辑删除的SQL执行方法,其特征在于,根据逻辑删除标志识别所述数据表中的逻辑删除字段的步骤包括:确定实体类中逻辑删除标志所指向的属性,根据实体类中属性与数据表中字段的映射关系,得到所述属性对应的字段,作为逻辑删除字段。6.根据权利要求1至5任一所述的对逻辑删除的SQL执行方法,其特征在于,根据所述逻辑删除字段生成对应的SQL操作条件,根据所述SQL操作条件更新...

【专利技术属性】
技术研发人员:林锡鑫
申请(专利权)人:广州视源电子科技股份有限公司广州视睿电子科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1