HJ 719-2014 环 境 信 息 系 统 数 据 库 访 问 接 口 规 范 Specification for database access interface of environment information system ( 发 布 稿 ) 本 电 子 版 为 发 布 稿 请 以 中 国 环 境 科 学 出 版 社 出 版 的 正 式 标 准 文 本 为 准 2014-12-25 发 布 2015-03-01 实 施 发 布
目 次 前 言.. II 1 适 用 范 围 1 2 术 语 和 定 义 1 3 数 据 库 访 问 接 口 框 架 1 4 数 据 库 访 问 接 口 方 式 2 5 环 境 信 息 系 统 数 据 库 访 问 接 口 推 荐 访 问 方 式 6 6 数 据 库 访 问 条 件 7 附 录 A ( 资 料 性 附 录 ) 触 发 器 方 式 数 据 库 接 口 的 SQL 脚 本 (MICROSOFT SQL SERVER)...8 附 录 B ( 资 料 性 附 录 ) 触 发 器 方 式 数 据 库 接 口 的 SQL 脚 本 (ORACLE).13 附 录 C ( 资 料 性 附 录 ) 时 间 戳 方 式 数 据 库 接 口 的 SQL 脚 本 (MICROSOFT SQL SERVER).17 附 录 D ( 资 料 性 附 录 ) 时 间 戳 方 式 数 据 库 接 口 的 SQL 脚 本 (ORACLE) 18 附 录 E ( 资 料 性 附 录 ) 环 境 信 息 系 统 数 据 库 访 问 示 例...19 I
前 言 为 贯 彻 中 华 人 民 共 和 国 环 境 保 护 法, 促 进 环 境 信 息 化 工 作, 明 确 关 系 型 数 据 库 的 访 问 接 口, 推 动 环 境 信 息 资 源 建 设, 制 定 本 标 准 本 标 准 规 定 了 环 境 信 息 系 统 中 关 系 型 数 据 库 的 访 问 接 口, 确 定 了 数 据 库 访 问 接 口 的 基 本 架 构 以 及 数 据 库 访 问 接 口 方 式 数 据 库 访 问 工 作 流 程 本 标 准 附 录 A 附 录 B 附 录 C 附 录 D 附 录 E 为 资 料 性 附 录 本 标 准 为 首 次 发 布 本 标 准 由 环 境 保 护 部 科 技 标 准 司 组 织 制 订 本 标 准 主 要 起 草 单 位 : 环 境 保 护 部 信 息 中 心 深 圳 市 环 境 保 护 宣 传 教 育 信 息 中 心 本 标 准 由 环 境 保 护 部 2014 年 12 月 25 日 批 准 本 标 准 自 2015 年 3 月 1 日 起 实 施 本 标 准 由 环 境 保 护 部 解 释 ii
环 境 信 息 系 统 数 据 库 访 问 接 口 规 范 1 适 用 范 围 本 标 准 规 定 了 环 境 信 息 系 统 中 关 系 型 数 据 库 的 访 问 接 口, 确 定 了 数 据 库 访 问 接 口 的 基 本 架 构 以 及 数 据 库 访 问 接 口 方 式 数 据 库 访 问 工 作 流 程 本 标 准 适 用 于 同 一 局 域 网 内 的 数 据 库 访 问, 以 及 环 境 信 息 系 统 的 关 系 型 数 据 库 访 问 接 口 的 建 设 2 术 语 和 定 义 下 列 术 语 和 定 义 适 用 于 本 标 准 2.1 环 境 信 息 environment information 环 境 管 理 环 境 科 学 环 境 技 术 环 境 保 护 产 业 等 与 环 境 保 护 相 关 的 数 据 指 令 和 信 号 等, 以 及 其 相 关 动 态 变 化 信 息 ; 包 括 文 字 数 字 符 号 图 形 图 像 影 像 和 声 音 等 各 种 表 达 形 式 2.2 数 据 库 database 按 照 概 念 结 构 组 织 的 数 据 的 汇 集, 它 描 述 这 些 数 据 的 特 征 及 与 数 据 对 应 的 实 体 间 的 关 系, 并 支 持 一 个 或 多 个 应 用 领 域 2.3 数 据 库 适 配 器 database adapter 按 指 定 要 求 和 标 准 规 范 进 行 数 据 库 访 问 的 功 能 组 件, 通 过 对 配 置 文 件 的 解 析 和 处 理, 完 成 数 据 库 访 问, 实 现 数 据 采 集 和 交 换 2.4 数 据 库 访 问 接 口 database access interface 嵌 入 各 环 保 业 务 数 据 库 中 专 门 针 对 外 部 应 用 访 问 所 做 的 配 置 数 据 库 访 问 接 口 与 适 配 器 相 适 应, 能 够 实 现 外 部 应 用 对 环 保 业 务 数 据 库 内 容 的 访 问 2.5 存 储 过 程 stored procedure 一 组 为 了 完 成 特 定 功 能 的 SQL(Structured Query Language) 语 句 集 合, 经 编 译 后 存 储 在 数 据 库 中 2.6 触 发 器 trigger 特 殊 的 存 储 过 程, 它 的 执 行 只 由 事 件 触 发, 如 对 一 个 数 据 库 表 进 行 插 入 删 除 更 新 操 作 (insert,delete,update) 时 激 活 它 执 行 2.7 时 间 戳 timestamp 指 明 时 间 上 相 对 于 通 用 时 标 精 确 到 秒 级 的 某 一 时 间 点 的 数 据 项 3 数 据 库 访 问 接 口 框 架 在 环 境 信 息 系 统 数 据 管 理 中, 数 据 库 访 问 接 口 用 于 获 取 同 域 内 的 各 个 业 务 应 用 的 数 据 库 内 容 对 各 个 业 务 系 统 提 供 的 数 据 库 访 问 接 口 统 一 规 定, 便 于 其 他 业 务 应 用 系 统 出 于 数 据 传 输 或 数 据 集 成 的 目 的 进 行 数 据 库 访 问 环 境 信 息 系 统 数 据 库 访 问 接 口 框 架 见 图 1 1
图 1 环 境 信 息 系 统 数 据 库 访 问 接 口 框 架 环 境 信 息 系 统 数 据 库 访 问 者 通 过 数 据 库 访 问 接 口 访 问 不 同 的 环 境 信 息 系 统 数 据 库 数 据 库 访 问 者 与 嵌 入 在 环 境 信 息 系 统 数 据 库 中 的 数 据 库 访 问 接 口 进 行 交 互, 获 取 环 境 业 务 应 用 数 据 库 的 内 容 4 数 据 库 访 问 接 口 方 式 4.1 数 据 库 视 图 方 式 在 实 际 业 务 中, 对 环 境 信 息 系 统 数 据 库 进 行 访 问, 需 定 制 数 据 与 其 访 问 需 求 有 关 的 数 据 内 容, 同 时 须 保 证 被 访 问 的 原 始 业 务 数 据 的 安 全 性 数 据 库 视 图 是 从 一 个 或 几 个 基 本 表 中 根 据 用 户 需 要 而 制 作 的 虚 拟 表, 能 够 为 数 据 提 供 一 定 的 逻 辑 独 立 性, 其 数 据 内 容 可 以 随 着 基 表 的 更 新 而 更 新 同 时, 用 户 对 视 图 不 能 随 意 更 改 和 删 除, 可 以 保 证 数 据 的 安 全 性 故 对 环 境 信 息 系 统 的 数 据 库 进 行 全 库 访 问 时, 可 采 用 数 据 库 视 图 的 访 问 接 口 方 式 4.1.1 接 口 方 式 描 述 根 据 访 问 者 的 访 问 需 要, 在 环 境 信 息 系 统 数 据 库 中 分 别 创 建 数 据 库 视 图, 并 对 视 图 赋 予 相 应 访 问 权 限 4.1.2 接 口 配 置 方 式 使 用 环 境 信 息 系 统 数 据 库 标 准 的 创 建 视 图 语 句 4.1.3 工 作 流 程 数 据 库 视 图 工 作 方 式 见 图 2 2
图 2 数 据 库 视 图 工 作 方 式 a) 将 环 境 信 息 系 统 数 据 表 的 数 据 内 容 根 据 访 问 者 需 要, 通 过 数 据 库 视 图 创 建 命 令 创 建 相 应 的 数 据 库 视 图 ; b) 访 问 者 根 据 需 要 访 问 数 据 库 视 图 获 取 所 需 要 的 环 境 信 息 系 统 数 据 4.2 触 发 器 方 式 4.2.1 接 口 方 式 描 述 触 发 器 方 式 是 指 在 源 数 据 库 的 业 务 应 用 数 据 表 中 添 加 触 发 器, 监 控 数 据 表 的 新 增 修 改 删 除 操 作 当 操 作 成 功 时, 触 发 相 应 的 触 发 器 将 该 记 录 的 主 键 等 信 息 插 入 到 指 定 的 访 问 接 口 中 间 表, 然 后 数 据 库 访 问 者 从 访 问 接 口 中 间 表 中 获 得 业 务 数 据 内 容 的 变 更 情 况, 从 而 达 到 实 时 的 数 据 库 增 量 访 问 效 果 4.2.2 接 口 配 置 方 式 a) 在 被 访 问 的 环 境 信 息 系 统 数 据 库 中 建 立 一 张 访 问 接 口 中 间 表, 用 于 存 放 相 关 触 发 器 和 临 时 交 换 记 录 不 同 的 环 境 信 息 系 统 临 时 交 换 记 录 都 采 用 统 一 的 中 间 表 格 式, 具 体 包 括 : T_Oth_Msg b) 创 建 一 个 对 访 问 接 口 中 间 表 做 操 作 的 存 储 过 程, 用 于 执 行 相 关 的 触 发 操 作, 具 体 包 括 : P_QueueMsg c) 针 对 要 实 时 访 问 的 数 据 表 建 立 新 增 和 修 改 删 除 的 触 发 器, 用 于 触 发 操 作, 具 体 包 括 : TR_AddTrigger_I TR_UpdateTrigger_U TR_DeleteTrigger_D 由 于 触 发 器 方 式 只 是 对 业 务 应 用 数 据 表 进 行 操 作 监 控, 且 只 对 访 问 接 口 中 间 表 进 行 操 作, 因 此 不 会 对 被 监 控 的 业 务 应 用 数 据 表 造 成 任 何 影 响 3
中 间 表 的 格 式 内 容 和 存 储 过 程 参 见 附 录 A 附 录 B 4.2.3 工 作 流 程 环 境 信 息 系 统 数 据 库 的 实 时 访 问 是 指 当 业 务 应 用 数 据 内 容 发 生 变 化 ( 包 括 新 增 更 新 删 除 等 操 作 ) 时, 实 时 地 触 发 数 据 库 访 问 者, 对 业 务 应 用 数 据 库 内 容 进 行 访 问, 实 时 获 取 业 务 数 据 的 变 化 情 况 环 境 信 息 系 统 数 据 库 的 实 时 访 问 采 用 触 发 器 方 式 的 数 据 库 访 问 接 口, 具 体 流 程 见 图 3 图 3 数 据 库 触 发 器 访 问 流 程 a) 信 息 系 统 数 据 表 的 内 容 在 执 行 相 关 操 作 的 时 候, 通 过 触 发 器 将 受 影 响 的 记 录 直 接 推 送 到 数 据 库 访 问 接 口 的 中 间 表 中 如 果 受 影 响 记 录 的 字 段 数 未 超 过 中 间 表 的 字 段 数, 则 将 受 影 响 记 录 的 所 有 信 息 推 送 ; b) 数 据 库 访 问 者 从 访 问 接 口 中 间 表 中 获 得 业 务 数 据 内 容 的 变 更 情 况 ; c) 当 受 影 响 的 记 录 字 段 数 超 过 中 间 表 的 字 段 数 时, 仅 将 受 影 响 记 录 的 主 键 等 唯 一 标 识 信 息 推 送 到 中 间 表 数 据 库 访 问 者 也 可 以 根 据 中 间 表 中 的 数 据 内 容, 直 接 访 问 业 务 应 用 数 据 表, 获 得 业 务 应 用 数 据 内 容 4.3 时 间 戳 方 式 4.3.1 接 口 方 式 描 述 时 间 戳 方 式 是 指 在 数 据 表 中 配 置 时 间 字 段, 定 时 轮 询 数 据 库 是 否 发 生 新 增 或 更 新 的 操 作, 以 达 到 数 据 增 量 同 步 的 作 用 采 用 时 间 戳 方 式 的 数 据 库 访 问 者 将 上 次 执 行 的 时 间 与 当 前 数 据 表 中 的 时 间 字 段 进 行 比 较, 甄 别 在 上 一 时 间 周 期 内 发 生 了 新 增 或 更 新 操 作 的 数 据 库 记 录, 从 而 达 到 访 问 数 据 的 目 的 4.3.2 接 口 配 置 方 式 a) 在 被 访 问 的 环 境 信 息 系 统 数 据 表 中, 创 建 用 于 比 较 的 时 间 戳 字 段 :Create_Time Update_Time; b) 每 个 被 访 问 的 环 境 信 息 系 统 数 据 表 都 必 须 有 两 个 用 于 轮 询 的 时 间 字 段 作 为 时 间 戳 一 个 用 于 记 录 创 建 时 间, 另 一 个 用 于 记 录 修 改 时 间 :Create_Time Update_Time 4
时 间 戳 字 段 的 数 据 类 型 为 业 务 应 用 数 据 库 的 时 间 类 型, 格 式 必 须 为 : 年 月 日 时 分 秒 ( 例 如 :2009-8-20 12:00:00) 每 次 查 询 数 据 表 时, 对 表 中 所 有 的 数 据 按 时 间 进 行 遍 历 查 询, 取 出 最 新 的 记 录 这 样, 如 果 源 数 据 库 中 数 据 过 多, 进 行 定 时 轮 询 时 就 会 对 交 换 的 性 能 造 成 影 响 填 入 时 间 戳 的 方 式 有 多 种, 如 通 过 数 据 库 结 构 化 查 询 语 句 (Structure Query Language) 填 入 值 触 发 器 方 式 自 动 填 入 值 等 建 议 采 取 建 立 触 发 器 方 式, 自 动 获 取 当 前 操 作 时 间 并 填 入 到 对 应 的 字 段 中 时 间 戳 触 发 器 编 写 方 式 参 见 附 录 C 附 录 D 4.3.3 工 作 流 程 环 境 信 息 系 统 数 据 库 的 定 时 访 问 是 指 数 据 库 访 问 者 按 照 预 定 的 时 间 周 期, 定 时 访 问 环 境 信 息 系 统 数 据 库, 并 根 据 系 统 数 据 表 的 时 间 戳, 获 取 上 一 时 间 周 期 里 的 环 境 信 息 系 统 数 据 库 所 发 生 的 变 化 内 容 ( 包 括 新 增 更 新 删 除 等 操 作 ) 环 境 信 息 系 统 数 据 库 的 定 时 访 问 通 常 采 用 时 间 戳 方 式 的 数 据 库 访 问 接 口 具 体 流 程 见 图 4 图 4 数 据 库 时 间 戳 定 时 访 问 流 程 a) 业 务 应 用 数 据 表 在 新 增 更 新 的 同 时, 更 新 时 间 戳 字 段 的 内 容 ; b) 数 据 库 访 问 者 定 时 访 问 业 务 应 用 数 据 表, 根 据 时 间 戳 字 段 所 记 录 的 新 增 和 更 新 时 间 戳, 获 取 上 个 时 间 周 期 里 的 业 务 应 用 数 据 库 的 变 化 内 容 4.4 应 用 服 务 接 口 方 式 专 用 于 应 用 层 面 数 据 库 访 问, 建 议 采 用 在 线 应 用 服 务 (webservice) 接 口 方 式 4.4.1 接 口 方 式 描 述 通 过 在 线 应 用 服 务 接 口 对 环 境 信 息 数 据 库 中 数 据 进 行 访 问, 从 而 获 取 所 需 要 的 信 息 4.4.2 接 口 配 置 方 式 被 访 问 的 环 境 信 息 系 统 根 据 访 问 者 需 要, 专 门 开 发 一 套 只 用 于 当 前 环 境 信 息 系 统 访 问 的 在 线 应 用 服 务 软 件 5
开 发 的 应 用 服 务 软 件 安 装 在 访 问 者 可 访 问 到 的 运 行 环 境 中 4.4.3 工 作 流 程 应 用 服 务 接 口 方 式 见 图 5 图 5 应 用 服 务 接 口 工 作 方 式 a) 访 问 者 在 访 问 环 境 信 息 系 统 数 据 库 中 数 据 时, 调 用 在 线 应 用 服 务 接 口 ; b) 应 用 服 务 接 口 根 据 应 用 者 要 求, 访 问 信 息 系 统 数 据, 并 将 访 问 结 果 反 馈 给 访 问 者 5 环 境 信 息 系 统 数 据 库 访 问 接 口 推 荐 访 问 方 式 环 境 信 息 系 统 数 据 库 访 问 按 照 访 问 的 环 境 信 息 数 据 内 容 可 分 为 全 部 数 据 访 问 和 增 量 数 据 访 问 全 部 环 境 信 息 数 据 访 问 建 议 采 用 数 据 库 视 图 的 接 口 方 式, 增 量 环 境 信 息 数 据 访 问 建 议 采 用 触 发 器 和 时 间 戳 的 接 口 方 式 数 据 库 访 问 方 式 参 见 附 录 E 在 应 用 层 面 数 据 库 访 问 方 式 中, 建 议 采 用 应 用 服 务 接 口 方 式 不 同 的 环 境 信 息 系 统 采 取 不 同 的 数 据 库 体 系, 本 规 范 针 对 部 分 主 要 环 境 信 息 系 统 关 系 型 数 据 库 访 问 方 式 进 行 说 明 具 体 推 荐 方 案 见 表 1 表 1 环 境 信 息 系 统 推 荐 数 据 库 访 问 方 式 序 号 类 型 环 境 信 息 系 统 推 荐 访 问 方 式 1 自 动 监 控 类 河 流 水 质 自 动 监 测 空 气 质 量 自 动 监 测 饮 用 水 源 自 动 监 测 污 染 源 在 线 监 控 机 动 车 尾 气 自 动 检 测 辐 射 环 境 监 控 危 险 废 弃 物 在 线 监 控 6 实 时 数 据 历 史 数 据 实 时 数 据 历 史 数 据 实 时 数 据 历 史 数 据 实 时 数 据 历 史 数 据 实 时 数 据 历 史 数 据 实 时 数 据 历 史 数 据 实 时 数 据 历 史 数 据 触 发 器 时 间 戳 触 发 器 时 间 戳 触 发 器 时 间 戳 触 发 器 时 间 戳 触 发 器 时 间 戳 触 发 器 时 间 戳 触 发 器 时 间 戳
2 业 务 管 理 类 3 统 计 考 核 类 其 他 建 设 项 目 管 理 排 污 许 可 证 管 理 排 污 收 费 管 理 环 保 移 动 执 法 管 理 环 境 信 访 投 诉 管 理 行 政 处 罚 管 理 公 文 文 件 管 理 其 他 环 境 统 计 全 国 城 市 环 境 综 合 整 治 定 量 考 核 污 染 源 普 查 其 他 应 用 服 务 接 口 时 间 戳 时 间 戳 时 间 戳 应 用 服 务 接 口 应 用 服 务 接 口 触 发 器 数 据 库 视 图 数 据 库 视 图 数 据 库 视 图 6 数 据 库 访 问 条 件 对 某 一 数 据 库 进 行 访 问 时, 在 网 络 连 通 的 情 况 下, 需 具 备 以 下 条 件 : a) 获 取 数 据 库 管 理 系 统 (DBMS) 类 型 ; b) 获 取 被 访 问 的 数 据 库 所 在 服 务 器 的 网 络 地 址 ; c) 获 取 被 访 问 的 数 据 库 的 实 例 名 ; d) 获 取 数 据 库 的 用 户 名 及 口 令 7
附 录 A ( 资 料 性 附 录 ) 触 发 器 方 式 数 据 库 接 口 的 SQL 脚 本 (Microsoft SQL Server) A.1 触 发 器 方 式 数 据 库 接 口 的 中 间 表 创 建 脚 本 CREATE TABLE [dbo].[t_oth_msg]( [PK_MsgId] [numeric](28, 0) IDENTITY(1,1) NOT NULL, [MsgQueuedAt] [datetime] NOT NULL, [MsgStatus] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL, [MsgDeliveredAt] [datetime] NULL, [MsgFailedText] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [OperationType] [varchar](10) COLLATE Chinese_PRC_CI_AS NULL, [MsgParam1] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [MsgParam2] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [MsgParam3] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [MsgParam4] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [MsgParam5] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [MsgParam6] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [MsgParam7] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [MsgParam8] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [MsgParam9] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [MsgParam10] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, ) ON [PRIMARY] GO 表 字 段 说 明 见 表 A.1 表 A.1 字 段 说 明 表 字 段 名 字 段 中 文 名 应 用 意 义 PK_MsgId 临 时 记 录 id 中 间 表 的 主 键 MsgQueuedAt 临 时 记 录 推 送 的 时 间 临 时 记 录 从 中 间 表 中 推 送 的 时 间 MsgStatus 临 时 记 录 的 状 态 标 识 临 时 记 录 是 否 为 待 推 送 的 信 息 MsgDeliveredAt 临 时 记 录 推 送 到 目 的 地 的 时 间 临 时 记 录 推 送 到 目 的 地 的 时 间 MsgFailedText 临 时 记 录 推 送 失 败 的 提 示 信 息 临 时 记 录 推 送 失 败 的 详 细 信 息 OperationType 临 时 记 录 的 操 作 类 型 临 时 记 录 在 业 务 数 据 表 中 执 行 的 操 作 ( 新 增 更 新 删 除 ) MsgParam1 8
MsgParam2 MsgParam3 MsgParam4 MsgParam5 MsgParam6 MsgParam7 MsgParam8 MsgParam9 MsgParam10 A.2 触 发 器 方 式 数 据 库 接 口 的 存 储 过 程 脚 本 create proc [dbo].[p_trigger_ 业 务 应 用 数 据 表 名 ] @OperationType varchar(10), @MsgParam1 varchar(255) = NULL, @MsgParam2 varchar(255) = NULL, @MsgParam3 varchar(255) = NULL, @MsgParam4 varchar(255) = NULL, @MsgParam5 varchar(255) = NULL, @MsgParam6 varchar(255) = NULL, @MsgParam7 varchar(255) = NULL, @MsgParam8 varchar(255) = NULL, @MsgParam9 varchar(255) = NULL, @MsgParam10 varchar(255) = NULL as BEGIN declare @ErrorCode int, @ErrorMessage varchar(255), @NumRows int select @ErrorCode = 0 insert T_Oth_Msg ( MsgQueuedAt, MsgStatus, MsgDeliveredAt, 9
MsgFailedText,OperationType, MsgParam1, MsgParam2, MsgParam3, MsgParam4, MsgParam5, MsgParam6, MsgParam7, MsgParam8, MsgParam9, MsgParam10 ) select getdate(), 'NEW', NULL, NULL,@OperationType, @MsgParam1, @MsgParam2, @MsgParam3, @MsgParam4, @MsgParam5, @MsgParam6, @MsgParam7, @MsgParam8, @MsgParam9, @MsgParam10 select @ErrorCode = @@error, @NumRows = @@rowcount return @ErrorCode END GO 存 储 过 程 参 数 设 置 说 明 见 表 A.2 表 A.2 存 储 过 程 参 数 表 参 数 名 参 数 含 义 MsgQueuedAt 临 时 记 录 从 中 间 表 中 推 送 的 时 间 MsgStatus 标 识 临 时 记 录 是 否 为 待 推 送 的 信 息 MsgDeliveredAt 临 时 记 录 推 送 到 目 的 地 的 时 间 MsgFailedText 临 时 记 录 推 送 失 败 的 详 细 信 息 OperationType 临 时 记 录 在 业 务 数 据 表 中 执 行 的 操 作 ( 新 增 更 新 删 除 ) MsgParam1 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam2 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam3 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam4 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam5 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam6 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam7 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam8 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam9 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam10 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 A.3 触 发 器 方 式 数 据 库 接 口 的 触 发 器 脚 本 CREATE TRIGGER TR_ 业 务 应 用 数 据 表 名 _I ON [dbo].[ 业 务 应 用 数 据 表 名 ] FOR insert AS BEGIN declare [ 表 字 段 1, 表 字 段 2, 表 字 段 3 ] declare cursor_insert cursor for select " 表 主 键 " from inserted open cursor_insert fetch cursor_insert into @ 表 字 段 1, @ 表 字 段 2, @ 表 字 段 3 while @@fetch_status=0 BEGIN exec P_Trigger_ 业 务 应 用 数 据 表 名 @OperationType ='insert', @MsgParam1= @ 表 字 段 10
1, @MsgParam2= @ 表 字 段 2, @MsgParam3= @ 表 字 段 3 fetch cursor_insert into @ 表 字 段 1, @ 表 字 段 2, @ 表 字 段 3 END close cursor_insert deallocate cursor_insert END GO CREATE TRIGGER TR_ 业 务 应 用 数 据 表 名 _U ON [dbo].[ 表 名 ] FOR update AS BEGIN declare [ 表 字 段 1, 表 字 段 2, 表 字 段 3 ] declare cursor_insert cursor for select " 表 主 键 " from inserted open cursor_insert fetch cursor_insert into @ 表 字 段 1, @ 表 字 段 2, @ 表 字 段 3 while @@fetch_status=0 BEGIN exec P_Trigger_ 业 务 应 用 数 据 表 名 @OperationType ='update', @MsgParam1= @ 表 字 段 1, @MsgParam2= @ 表 字 段 2, @MsgParam3= @ 表 字 段 3 fetch cursor_insert into @ 表 字 段 1, @ 表 字 段 2, @ 表 字 段 3 END close cursor_insert deallocate cursor_insert END GO CREATE TRIGGER TR_ 业 务 应 用 数 据 表 名 _D ON [dbo].[ 表 名 ] FOR delete AS BEGIN declare [ 表 字 段 1, 表 字 段 2, 表 字 段 3 ] declare cursor_insert cursor for select " 表 主 键 " from deleted open cursor_insert fetch cursor_insert into @ 表 字 段 1, @ 表 字 段 2, @ 表 字 段 3 while @@fetch_status=0 BEGIN exec P_Trigger_ 业 务 应 用 数 据 表 名 @OperationTypeName = 'delete', @MsgParam1= @ 表 字 段 1, @MsgParam2= @ 表 字 段 2, @MsgParam3= @ 表 字 段 3 fetch cursor_insert into @ 表 字 段 1, @ 表 字 段 2, @ 表 字 段 3 11
END close cursor_insert deallocate cursor_insert END 触 发 器 参 数 设 置 说 明 : 触 发 器 中 使 用 到 的 参 数 与 存 储 过 程 中 间 表 中 使 用 的 字 段 含 义 一 致 触 发 器 方 式 的 数 据 库 访 问 接 口 由 中 间 表 存 储 过 程 触 发 器 之 间 相 互 配 合 完 成, 具 体 流 程 为 : 由 触 发 器 对 业 务 数 据 表 进 行 实 时 监 控 当 业 务 数 据 表 有 变 化 时, 对 应 的 触 发 器 对 发 生 的 变 化 进 行 捕 获, 并 调 用 相 应 的 存 储 过 程, 将 发 生 的 变 化 信 息 存 储 到 中 间 表 中 12
附 录 B ( 资 料 性 附 录 ) 触 发 器 方 式 数 据 库 接 口 的 SQL 脚 本 (Oracle) B.1 触 发 器 方 式 数 据 库 接 口 的 中 间 表 创 建 脚 本 drop table "T_Oth_Msg" cascade constraints; create table "T_Oth_Msg" ( "PK_MsgId" bigint not null, "MsgQueuedAt" datetime, "MsgStatus" varchar(10), "MsgDeliveredAt" datetime NULL, "MsgFailedText" varchar(255) NULL, "OperationType" varchar(10) NULL, "MsgParam1" varchar(255) NULL, "MsgParam2" varchar(255) NULL, "MsgParam3" varchar(255) NULL, "MsgParam4" varchar(255) NULL, "MsgParam5" varchar(255) NULL, "MsgParam6" varchar(255) NULL, "MsgParam7" varchar(255) NULL, "MsgParam8" varchar(255) NULL, "MsgParam9" varchar(255) NULL, "MsgParam10" varchar(255) NULL, constraint PK_T_OTH_MSG primary key ("PK_MsgId") ); create sequence seq_t_oth_msg minvalue 1000 maxvalue 99999999 start with 1000 increment by 1 nocache; 表 字 段 说 明 见 表 B.1 表 B.1 字 段 说 明 表 字 段 名 字 段 中 文 名 应 用 意 义 PK_MsgId 临 时 记 录 id 中 间 表 的 主 键 MsgQueuedAt 临 时 记 录 推 送 的 时 间 临 时 记 录 从 中 间 表 中 推 送 的 时 间 MsgStatus 临 时 记 录 的 状 态 标 识 临 时 记 录 是 否 为 待 推 送 的 信 息 MsgDeliveredAt 临 时 记 录 推 送 到 目 的 地 的 时 间 临 时 记 录 推 送 到 目 的 地 的 时 间 MsgFailedText 临 时 记 录 推 送 失 败 的 提 示 信 息 临 时 记 录 推 送 失 败 的 详 细 信 息 OperationType 临 时 记 录 的 操 作 类 型 临 时 记 录 在 业 务 数 据 表 中 执 行 的 操 作 ( 新 13
MsgParam1 MsgParam2 MsgParam3 MsgParam4 MsgParam5 MsgParam6 MsgParam7 MsgParam8 MsgParam9 MsgParam10 增 更 新 删 除 ) B.2 触 发 器 方 式 数 据 库 接 口 的 存 储 过 程 脚 本 create or replace procedure P_QueueMsg_ 业 务 应 用 数 据 表 名 ( OperateType in varchar2, MsgParam1 in varchar2, MsgParam2 in varchar2, MsgParam3 in varchar2, MsgParam4 in varchar2, MsgParam5 in varchar2, MsgParam6 in varchar2, MsgParam7 in varchar2, MsgParam8 in varchar2, MsgParam9 in varchar2, MsgParam10 in varchar2 ) as 14
begin insert into T_Oth_Msg ( PK_MsgId,MsgQueuedAt, MsgStatus, MsgDeliveredAt, MsgFailedText,OperationType, MsgParam1, MsgParam2, MsgParam3, MsgParam4, MsgParam5, MsgParam6, MsgParam7, MsgParam8, MsgParam9, MsgParam10 ) values (seq_t_oth_msg.nextval,sysdate, 'NEW', NULL, NULL,OperationType, MsgParam1, MsgParam2, MsgParam3, MsgParam4, MsgParam5, MsgParam6, MsgParam7, MsgParam8, MsgParam9, MsgParam10); end P_Trigger_ 业 务 应 用 数 据 表 名 ; 存 储 过 程 参 数 设 置 说 明 见 表 B.2 表 B.2 存 储 过 程 参 数 设 置 说 明 参 数 名 参 数 含 义 MsgQueuedAt 临 时 记 录 从 中 间 表 中 推 送 的 时 间 MsgStatus 标 识 临 时 记 录 是 否 为 待 推 送 的 信 息 MsgDeliveredAt 临 时 记 录 推 送 到 目 的 地 的 时 间 MsgFailedText 临 时 记 录 推 送 失 败 的 详 细 信 息 OperationType 临 时 记 录 在 业 务 数 据 表 中 执 行 的 操 作 ( 新 增 更 新 删 除 ) MsgParam1 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam2 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam3 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam4 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam5 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam6 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam7 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam8 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam9 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 MsgParam10 业 务 数 据 表 中 受 影 响 记 录 的 具 体 信 息 B.3 触 发 器 方 式 数 据 库 接 口 的 触 发 器 脚 本 create or replace trigger 触 发 器 名 before [insert update delete] on 业 务 应 用 数 据 表 名 for each row begin P_QueueMsg_ 业 务 应 用 数 据 表 名 (['insert' 'update' 'delete'], 表 字 段 1, 表 字 段 2,...); End 触 发 器 参 数 设 置 说 明 : 15
触 发 器 中 使 用 到 的 参 数 与 存 储 过 程 中 间 表 中 使 用 的 字 段 含 义 一 致 触 发 器 方 式 的 数 据 库 访 问 接 口 由 中 间 表 存 储 过 程 触 发 器 之 间 相 互 配 合 完 成, 具 体 流 程 为 : 由 触 发 器 对 业 务 数 据 表 进 行 实 时 监 控 当 业 务 数 据 表 有 变 化 时, 对 应 的 触 发 器 对 发 生 的 变 化 进 行 捕 获, 并 调 用 相 应 的 存 储 过 程, 将 发 生 的 变 化 信 息 存 储 到 中 间 表 中 16
附 录 C ( 资 料 性 附 录 ) 时 间 戳 方 式 数 据 库 接 口 的 SQL 脚 本 (Microsoft SQL Server) 时 间 戳 方 式 数 据 库 接 口 的 触 发 器 脚 本 CREATE TRIGGER 触 发 器 名 ON 表 名 FOR [INSERT UPDATE ] AS Update 表 名 set [create_time update_time ] =getdate(); 触 发 器 参 数 设 置 说 明 见 表 C.1 表 C.1 触 发 器 参 数 表 参 数 名 参 数 中 文 名 应 用 意 义 create_time 业 务 数 据 的 创 建 时 间 业 务 数 据 表 中 的 字 段, 用 于 记 录 表 中 数 据 的 创 建 时 间 业 务 数 据 表 中 的 字 段, 用 于 记 录 表 中 数 据 update_time 业 务 数 据 的 更 新 时 间 的 更 新 时 间 时 间 戳 方 式 数 据 库 接 口 的 触 发 器 工 作 流 程 为 : 触 发 器 对 业 务 数 据 表 进 行 实 时 监 控, 当 业 务 数 据 表 有 变 化 时, 触 发 该 触 发 器 对 发 生 变 化 的 时 间 进 行 记 录, 并 插 入 到 对 应 的 业 务 数 据 表 时 间 字 段 中 17
附 录 D ( 资 料 性 附 录 ) 时 间 戳 方 式 数 据 库 接 口 的 SQL 脚 本 (Oracle) 时 间 戳 方 式 数 据 库 接 口 的 触 发 器 脚 本 create or replace trigger 触 发 器 名 before [insert update] on 业 务 应 用 数 据 表 名 for each row begin as update 表 名 set [create_time update_time] = sysdate; end 触 发 器 参 数 设 置 说 明 见 表 D.1 表 D.1 触 发 器 参 数 表 参 数 名 参 数 中 文 名 应 用 意 义 create_time 业 务 数 据 的 创 建 时 间 业 务 数 据 表 中 的 字 段, 用 于 记 录 表 中 数 据 的 创 建 时 间 业 务 数 据 表 中 的 字 段, 用 于 记 录 表 中 数 据 update_time 业 务 数 据 的 更 新 时 间 的 更 新 时 间 时 间 戳 方 式 数 据 库 接 口 的 触 发 器 工 作 流 程 为 : 触 发 器 对 业 务 数 据 表 进 行 实 时 监 控, 当 业 务 数 据 表 有 变 化 时, 触 发 该 触 发 器 对 发 生 变 化 的 时 间 进 行 记 录, 并 插 入 到 对 应 的 业 务 数 据 表 时 间 字 段 中 18
附 录 E ( 资 料 性 附 录 ) 环 境 信 息 系 统 数 据 库 访 问 示 例 数 据 传 输 与 交 换 平 台 系 统 访 问 国 控 重 点 污 染 源 自 动 监 控 系 统 数 据 库 E.1 基 本 情 况 系 统 名 称 : 国 控 重 点 污 染 源 自 动 监 控 系 统 访 问 者 : 数 据 传 输 与 交 换 平 台 数 据 库 访 问 接 口 : 视 图 时 间 戳 E.2 访 问 方 式 数 据 库 访 问 方 式 见 图 E.1 适 配 器 c) 数 据 传 输 与 交 换 平 台 d) a) b) 信 息 系 统 数 据 表 时 间 戳 数 据 库 视 图 国 控 重 点 污 染 源 自 动 监 控 系 统 数 据 库 图 E.1 数 据 传 输 与 交 换 平 台 访 问 污 染 源 自 动 监 控 系 统 数 据 库 方 式 a) 在 国 控 重 点 污 染 源 自 动 监 控 系 统 数 据 表 中, 将 数 据 更 新 时 间 作 为 时 间 戳 字 段 使 用 ; b) 根 据 数 据 传 输 与 交 换 平 台 的 访 问 要 求, 将 包 含 时 间 戳 字 段 的 数 据 表 按 照 数 据 库 视 图 接 口 方 式 创 建 访 问 视 图 ( 为 防 止 影 响 信 息 系 统 数 据 表, 采 取 视 图 方 式 ); c) 数 据 传 输 与 交 换 平 台 通 过 适 配 器 组 件 访 问 国 控 重 点 污 染 源 自 动 监 控 系 统 数 据 库 ; d) 通 过 适 配 器 配 置 轮 询 方 式, 定 期 访 问 数 据 库 视 图, 根 据 当 前 时 间 与 时 间 戳 字 段 的 比 较, 访 问 最 新 数 据 19