公开/公告号CN101256577A
专利类型发明专利
公开/公告日2008-09-03
原文格式PDF
申请/专利权人 中兴通讯股份有限公司;
申请/专利号CN200810066301.9
发明设计人 陈幼柏;
申请日2008-03-18
分类号G06F17/30(20060101);
代理机构44268 深圳市君胜知识产权代理事务所;
代理人杨宏
地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部
入库时间 2023-12-17 20:41:01
法律状态公告日
法律状态信息
法律状态
2019-03-08
未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20130605 终止日期:20180318 申请日:20080318
专利权的终止
2017-09-15
专利权的转移 IPC(主分类):G06F17/30 登记生效日:20170825 变更前: 变更后: 申请日:20080318
专利申请权、专利权的转移
2017-09-15
著录事项变更 IPC(主分类):G06F17/30 变更前: 变更后: 申请日:20080318
著录事项变更
2013-06-05
授权
授权
2008-10-29
实质审查的生效
实质审查的生效
2008-09-03
公开
公开
查看全部
技术领域
本发明涉及一种在嵌入式数据库中触发器功能实现的方法,具体涉及一种具有功能强大的通知消息的触发器实现方法。
背景技术
在嵌入式数据库中,由于系统的业务规则的特殊性和多样性,这就导致业务数据之间关系的复杂性,很难用现有的约束规则(如值域约束、外键、 表互斥等)来完全表示这种复杂的关系。为了实现这种复杂的约束关系就必须在配置窗口实现这种约束规则,由于配置窗口与数据库数据区的隔离必然涉及到查表动作,这样必然会相当复杂,而且效率也不高。
无线通信系统中对数据库操作是随机、并发的,这样某个上层应用在操作数据库后,导致数据库中的数据发生变化,另一个可能还在保持在原来的数据下工作,要保持这种数据的一致性,一种方法是上层应用的相互通知,另一种是应用定时查询数据库,维护数据的一致性。这样会增加应用之间很多的不必要交互过程,增加了应用模块的耦合度。
数据库中触发器是一类特殊的存储过程,被定义为在对表或视图发UPDATE、INSERT或DELET语句时自动执行特殊的业务规则。嵌入式数据库中实现触发器的功能可以对记录或字段有特殊约束规则要求的数据检查,使数据库中记录的数据是复合业务规则的“合法”数据。同时一种通知消息的触发器可以在数据库中的数据有任何变化时可以及时通知相关应用,保证业务的运行和数据的一致性,提高系统处理效率。
发明内容
本发明的目的在于提供一种嵌入式数据库中触发器的可靠实现方法,对其现有数据库中的触发器功能进行延伸,以形成一种具有功能强大的通知消息的触发器。
为了实现上述目的,本发明采用如下技术方案:
本发明的方法包括以下处理步骤:
A、向数据库注册通知消息的触发器;
B、当检测到数据库有修改操作时,向所述应用模块发送含有数据库变化状态的通知消息。
其中,所述步骤A还包括以下步骤:数据库校验应用模块注册的触发器的正确性,并在校验通过后,将触发器的注册内容插入到内存中。
其中,所述方法通过以下步骤进行触发器正确性的校验:
通过对触发器进行约束规则检查,以及对触发器注册内容中的取值进行合法性检验。
其中,所述内存包括触发器注册表。
其中,所述步骤B包括以下步骤:
B1、应用模块对数据库进行修改操作;
B2、数据库判断是否有来自所述应用模块的修改操作指令;如果是,则执行B3;
B3、遍历触发器注册表,判断是否存在所述应用模块注册的通知消息的触发器;如果是,则步骤B4;
B4、数据库对修改操作的数据进行约束检查;
B5、数据库进行数据修改操作;
B6、执行触发器,向所述应用模块发送通知消息;
B7、所述应用模块根据所述通知消息的内容,进行自我更新操作。
其中,所述步骤B4与步骤B3之间还包括以下步骤:
当判断存在所述应用模块注册的通知消息的触发器时,数据库向所述应用模块发送关于确认修改操作是否继续执行的通知消息。
其中,所述应用模块根据接收到的通知消息,对修改操作是否继续执行进行确认,若所述应用模块停止修改操作,则发送中断制止数据库进行修改操作。
其中,所述步骤B6中,数据库向所述应用模块发送的是:关于数据库修改状态的通知消息。
其中,所述通知消息中包含:数据库中数据变化的内容或趋势。
本发明通过向应用模块发送通知消息,来实时保证业务数据和数据库中数据的一致性,使用本发明的方法可以实现嵌入式数据库中除索引约束、值约束、外键约束等复杂的业务规则约束关系,保证数据库中数据是符合业务要求的合法数据;本发明利用通知消息的触发器实时地保证了业务数据和数据库中数据的一致性,保证了系统的正常运行,提高了系统的运行效率。
附图说明
图1为本发明方法的流程图。
具体实施方式
以下结合附图详细描述本发明的技术方案。
如图1所示,本发明嵌入式数据库中触发器的可靠实现方法的核心思想是:如果应用模块(即嵌入式操作系统中完成某一业务的功能模块)需要监控数据库的变化,则可以向数据库注册具有通知消息的触发器,一旦数据库有修改时,该触发器可以向应用模块发送记录有修改信息的通知消息,那么应用模块可以随时保持和数据库的一致性。其方法主要包括以下步骤:
步骤1、应用模块向数据库注册触发器。
数据库中的数据一般都有多个应用模块进行读写或修改操作,各个应用模块的约束规则也不尽相同,一般的约束规则函数由数据库设计人员先搜集业务规则,然后在函数中根据不同的业务实现约束。
通知消息的触发器的注册内容包括如下信息:
应用标识号:表示是哪个应用注册的触发器。
表:表句柄或表名或表序号等。
触发时间:before(数据更改前)、after(数据更改后)。
触发级别:记录级还是字段级。
触发事件:insert(插入)、update(更新)、delete(删除)等,记录级时三种方法都有,字段级时一般仅限update。
字段描述:一般用字段名。
步骤2、数据库检测触发器的正确性。
应用模块注册的触发器首先必须满足的条件是:符合索引约束、值约束、外键约束等一般的约束规则。对于应用模块定制的特殊规则,以函数的方式实现,一般的通过代码走查或在实际应用中去校验。而对于通知消息的触发器,可以对其中的时间、方法、类型这些取特定的值进行合法性校验,并对表、索引、字段等和数据库中的数据比较判断其是否存在,同时还要防止完全一样的注册内容。在注册内容通过校验后,将注册内容保存到内存中。为了便于查找,可以将应用模块注册内容保存到相应的数据结构中,比如保存到触发器注册表中。
步骤3、应用模块对数据库进行修改操作,其修改操作包括:记录级的插入、删除、更新操作,以及字段值的更新修改。
步骤4、判断是否有来自所述应用模块的修改操作指令;如果是,则执行步骤5;如果否,则返回步骤3。
步骤5、遍历触发器注册表,判断是否存在该应用模块注册的通知消息的触发器;如果是,则步骤6;如果否,则返回步骤3继续在触发器注册表寻找匹配的触发器,如果始终没有找到匹配的触发器,则按常规流程进行数据库的修改操作。
步骤6、数据库向应用模块发送关于确认修改操作是否继续执行的通知消息。
在对某个修改操作执行该步骤时,可以先向应用模块发送关于确认修改操作是否继续执行的通知消息。上述应用模块根据接收到的通知消息,对修改操作是否继续执行进行确认,若应用模块预停止修改操作,则发送中断制止数据库进行修改操作,停止执行下述步骤8。这样可以避免数据库的误操作。
步骤7、数据库依据流程顺序对修改操作的数据进行约束检查。
步骤8、数据库进行数据进行实际的修改操作,比如修改记录或字段。
步骤9、执行触发器,向所述应用模块发送关于数据库修改状态的通知消息。
在数据库收到应用模块的操作指令,并要进行实际的操作前,首先要检验数据的特殊的约束规则,只有所有的约束规则都满足时,数据库才能进行实际的操作,特别是关于数据的增删操作,这里所说的约束规则包括索引约束、值约束、外键约束等。对于数据库存在记录或字段的变化时,进行完约束检查的同时,以及检验到注册了通知消息的触发器时,在操作完数据库便有效后,还要向应用模块发送通知消息。由于业务应用的特殊性,业务要求通知消息中包含变化的内容或趋势,通知消息中就必须保存“新旧的数据”,如增加时只保存新记录,删除时只保存旧记录,更新操作时将新旧记录都保存。
步骤10、应用模块收到通知消息并进行相应地处理。
应用收到通知消息后,进行自身数据的更新,同时可以维护和自身模块相关的其它模块的数据,保证系统的正常运行。
步骤11、应用模块根据需要注销触发器注册器。
应用模块若没有注销触发器,则重复步骤3至10步。若注销触发器就清除掉通知消息触发器注册表中的相关数据。
本发明对数据库中的触发器功能进行了延伸,实现了一种功能强大通知消息的触发器,其应用于一种无线系统中的嵌入式数据库,在有特殊业务规则限制,进行约束检查,保证数据的“合法性”,在数据有变化时通知相关业务应用,及时正确地处理,保证应用和数据库内部数据的一致性。
上述各具体步骤的举例说明较为具体,并不能因此而认为是对本发明的专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。
机译: 一种用于从3d体积中的代表性数据中识别频道的计算机实现的方法以及一种实现该方法的计算机程序产品
机译: 一种实现单相边沿触发双轨动态触发器的方法
机译: v u00ecdeo的编码方法,v u00ecdeo编码器,对v u00ecdeo进行解码的方法,v u00ecdeo解码器可还原位序列的帧。M u00ecdia存储已存储在程序中,通过计算机读取 u00ecvel即可实现一种用于对v u00ecdeo,M u00ecdia存储器进行编码的方法,该方法已存储在计算机读取的程序pass u00ecvel中,以实现对v u00ecdeo进行编码的方法。v u00ecdeo的编码方法,用于消除冗余中的冗余v u00ecdeo的帧,解码v u00ecdeo的方法以恢复输入比特序列的原始图像,以及解码装置以恢复当前帧