华为云用户手册

  • 连接参数 连接器使用数字工厂分配的client_id和client_secret认证方式,连接前需要先登录数字工厂平台应用集成界面创建一个新应用,并获取到认证信息,请参考获取认证信息。 连接器验证,需要配置相关参数,参数说明请参考表1。 表1 连接器认证参数说明 参数 类型 是否必填 说明 默认值 示例值 应用标识 String 是 注册应用后,分配的client_id。获取方法请参见获取认证信息。 无 YVMBE***QIJCR 应用密钥 String 是 注册应用后,分配的client_secret。获取方法请参见获取认证信息。 无 ****** 实例ID String 是 实例ID。获取方法请参见获取对接信息。 无 aaa***bbb 站点编码 String 否 站点编码。企业层调用时必填,行业层调用时不需要填写。获取方法请参见获取对接信息。 无 DefaultSite
  • 周边停车场查询 周边停车场查询。 输入参数:包含“页码”、“页码”、“距离范围”必填参数。“纬度”、“经度”选填参数。 输出参数:包含“响应内容”、“总数”、“停车场详细信息”、“区域”、“地址”、“经度”、“停车场图片列表”、“范围”、“城市名”、“总数车位”、“收费描述”、“停车ID”、“停车场类型”、“剩余车位”、“是否预定”、“省份”、“价格”、“价格单位”、“停车场名称”、“纬度”参数。
  • 文本翻译 文本翻译是为了实现语种间的转换。对于用户输入原始语种的文本,转换为目标语种的文本。 接口功能及调用方法请参见文本翻译。 输入参数 用户配置文本翻译执行动作,相关参数说明如表2所示。 表2 文本翻译输入参数说明 参数 必填 说明 待翻译文本 是 待翻译文本,长度不超过5000字符。 翻译原语言 是 翻译原语言,有下拉框和输入框模式,填写在默认输入模式下可以选到的选项。 翻译目标语言 是 翻译目标语言,有下拉框和输入框模式,填写在默认输入模式下可以选到的选项。 输出参数 用户可以在之后的执行动作中调用该输出参数,输出参数说明请参考表3。 表3 文本翻译输出参数说明 参数 说明 翻译原文 输入的翻译原文。 调用结果 文本翻译的调用结果。 源语种 翻译原文的源语种。 目标语种 翻译的目标语种。
  • 文档翻译(创建翻译任务) 由于文档翻译会需要较长的时间,因此翻译是异步的,也即接口分为创建翻译任务和查询任务状态两个接口。 输入参数 用户配置文档翻译执行动作,相关参数说明如表4所示。 表4 文档翻译输入参数说明 参数 必填 说明 文档文件存放路径 是 存放在OBS的文档文件路径。 选择文件所存放的桶时,必须为公共桶,不能选择私有通。 单击公共桶名称进入后,单击所存放的文件右侧的“分享”,进入分享文件界面后,“链接信息”为文档文件存放路径。如下图举例所示: 图1 文档存放路径 翻译原语言 是 翻译原语言,有下拉框和输入框模式,填写在默认输入模式下可以选到的选项。 翻译目标语言 是 翻译目标语言,有下拉框和输入框模式,填写在默认输入模式下可以选到的选项。 文档格式 是 文档格式,当前仅支持翻译“docx”、“pptx”和“txt”格式的文档。 输出参数 用户可以在之后的执行动作中调用该输出参数,输出参数说明请参考表5。 表5 文档翻译输出参数说明 参数 说明 任务标识 创建的任务标识。
  • 创建标注任务 在模型地图页面,单击界面右上方的“标注配置”。 选择“标注任务”页签,单击“创建标注任务”按钮,配置任务信息。 表3 标注任务配置 参数 配置说明 任务名称 填写标注任务名称,例如,季度营业额。 描述 填写对此任务的描述信息。 任务类型 重建标注:删除实例上所选择的标注,重新给符合规则的实例打上所选择的标注。 清除标注:删除实例上所选择的标注。 执行方式 手动,即手动执行标注任务。 自动,即设定自动任务时间,任务根据指定时间定时启动标注任务。 选择标注 选择需要执行标注任务的标注。 开始执行时间 选择标注任务开始执行的时间。例如,2020/10/30 17:00:00,则表示,此标注任务将于2020年10月30日17点开始执行。 周期类型 选择标注任务执行的周期类型,与执行周期配合使用,例如,周期类型为月,执行周期为3,则表示每3个月执行一次标注任务。 执行周期 选择标注任务执行的周期,与周期类型配合使用。 配置完成后单击“确定”,标注任务创建完成。
  • 应用模型使用流程(新版) 应用模型(新版)的使用流程如图1所示,包括采集技术模型、创建业务模型、关联技术模型与业务模型,及业务模型和技术模型创建完成后,在模型地图中检索模型数据。 图1 使用流程(新版) 采集技术模型 在创建采集任务之前,需要先接入数据源,确保可以正常从数据源采集模型。 根据数据源类型的不同,数据源的接入配置有所差异。具体参考接入数据源。 创建采集任务。 启动/执行采集任务,可以自动/手动采集数据源中的技术元数据,即采集技术模型。 创建业务模型 创建业务架构。 从业务视角出发,根据实际业务场景创建自定义业务架构模型,创建成功自动生成对应的业务适配器。业务模型是模型目录资产录入的依据。 发布业务架构。 用户需对1中创建的业务架构进行发布操作,单击信息架构列表“操作”列的“发布”,可发布处于“未发布”状态的业务架构。发布后,在模型目录中会生成对应的业务模型管理页面,可进行业务模型的录入。 配置实体及关系。 用户通过信息架构图进行创建实体元模型和新增实体元模型关系的配置。 检索模型 在数据地图中检索业务模型和技术模型,具体参考检索模型。
  • 应用模型使用流程(旧版) 应用模型(旧版)的使用流程如图2所示,包括采集技术模型、创建业务模型、关联技术模型与业务模型,及业务模型和技术模型创建完成后,在模型地图中检索模型数据。 图2 使用流程(旧版) 采集技术模型 在创建采集任务之前,需要先接入数据源,确保可以正常从数据源采集模型。 根据数据源类型的不同,数据源的接入配置有所差异。具体参考接入数据源。 创建采集任务。 启动/执行采集任务,可以自动/手动采集数据源中的技术元数据,即采集技术模型。 创建业务模型 创建业务资产。 从业务视角出发,设计业务模型使适配信息架构五层模型,再将设计好的业务模型录入到资产目录中。 上架业务资产。 用户需对资产进行上架操作,才可以使业务资产的最新变动对所有用户可见。 (可选)添加基础对象。 添加数据资产信息架构中每个业务模型都可以依赖的公共业务模型。 (可选)注册业务模型和技术模型之间的关系 注册业务模型中的逻辑实体和实体属性,将资产目录中创建的业务模型和模型采集到的技术模型进行映射关联。 检索模型 在数据地图中检索业务模型和技术模型,具体参考检索模型。
  • 实施项目 项目授权后,系统集成商可以进入到委托该项目的租户界面进行项目实施。 在集成项目管理界面,选择界面左上方的角色为“系统集成商”。 单击界面上方的“实施中”。 选择要实施的项目,单击“实施”。 在弹出的窗口中单击“确定”进入实施页面,如图2所示,界面右上角账号下有一串字符串,即表示已经切换到委托该项目的租户界面。 图2 实施页面 实施完成之后,在界面右上角单击账号信息,选择“切换角色”,在选择系统集成商自己的账号,切换回系统集成商的界面,如图3所示。 图3 切换回系统集成商页面 (可选)用户实施完成后,可以请求验收项目。
  • 模型目录概述 模型目录,提供可视化模型管理页面,其中的业务模型管理页面是由对应的模型架构自动生成,用户可根据不同的业务信息架构,进行业务模型设计,完成业务模型的录入。支持单独或批量对业务模型数据进行创建,编辑,下架,删除等操作,支持模型数据的导入导出。 梳理业务模型:从业务视角出发,梳理端到端业务,明确各业务要素(例如:业务范围、业务过程、业务发生主体、业务事件等),归纳总结,设计出符合自己组织的业务模型,使得业务语言统一,打通整个业务流,消除信息孤岛和提升业务流集成效率。 录入业务模型:用户设计好业务模型后,选择对应的模型架构页签,创建独立的命名空间,按照设计新增业务模型。新增的模型处于下架状态,此时仅创建人可见,录入无误后,上架模型资产,使业务模型所有人可见,可用。 基础对象管理:资产目录管理中创建命名空间时,会自动在基础对象管理目录中创建一个同名命名空间,用户可以在该命名空间下创建或编辑基础对象,上架后可供同名命名空间下的业务模型资产依赖。 父主题: 模型目录(旧版)
  • 模型关联关系业务字典添加 在模型地图页面,在搜索栏中输入需要查询的模型数据关键字,单击“搜索”跳转模型列表界面,单击模型名称,进入模型详情页面。 单击对应模型关联关系页面“业务字典”列的“添加”。 在弹出的“添加业务字典”对话框中,完成业务字典选择。 选择需要添加的一个或多个业务字典,或在搜索栏中输入业务字典名称检索。 如果存在对应业务字典,则单击复选框选择。 如果不存在对应业务字典,则单击创建提醒,弹出“新增业务字典”对话框,具体参数配置参见表1。单击“确定”,完成业务字典创建,返回“添加业务字典”对话框。 单击“确定”,完成模型关联关系的业务字典添加。
  • 业务可视化使用流程 业务可视化使用流程如图1所示,包括“配置管理”、“新建公共卡片模板”、“新建我的卡片”、“新建并发布屏幕模板”、“新建我的屏幕”、“新建屏幕轮播”、“回收站”。 图1 使用流程 (可选)配置管理 新建布局 通过上传离线开发好的页面布局源文件,为新建屏幕模板提供页面布局选择,从而实现自定义屏幕构建。 新建屏幕主题 通过上传离线开发好的屏幕主题源文件,为后续配置屏幕所需的背景颜色、背景图片、主题风格提供了多样化的选择,从而实现自定义屏幕构建。 新增自定义消息SO 新增自定义消息SO(Schema Object),为卡片之间的交互关系提供了消息联动的基础配置,从而实现自定义屏幕构建。 (可选)新建公共卡片模板 业务可视化已经预置通用的公共卡片模板,如果不满足你的需求,您可以新建卡片模板。 新建我的卡片 通过公共卡片模板或上传离线卡片的方式构建自定义卡片。 新建并发布屏幕模板 通过关联布局和卡片、设置卡片消息联动、配置样例页面来创建屏幕模板。 新建我的屏幕 通过选择公共屏幕模板构建而来,可二次定义相关属性配置。 (可选)新建屏幕轮播 将多个屏幕进行组合后,能达到屏幕页面轮播、左右翻页、底部导航切换的效果。 (可选)回收站 通过回收站对已删除数据进行恢复操作,可回收60天内删除的内容。 父主题: 业务可视化
  • 变量赋值 使用变量赋值前需进行变量的定义,即在“初始化变量”动作定义完成后,变量赋值的侧边栏参数“变量名”的下拉列表中才能选取到参数。在变量名的最右侧会展示变量的类型。 输入参数 用户配置变量赋值执行动作,如图2所示,相关参数说明如表6所示。 图2 变量赋值输入参数 表6 变量赋值输入参数说明 参数 说明 变量名 选择参数类型(暂无数据)。 值 设定参数的预设值。通过填入值,实现对该参数值的改动。 输出参数 该执行动作无输出参数。
  • 追加到数组变量 需要先定义一个数组变量,可将值内填写的数据,以字符串的形式追加到数组变量中。例如,先定义一个变量名为data的变量,类型为数组,值为【“123”】,使用追加到数组变量后,可在下拉框内选择data,传入值456,运行即可获得变量data,类型为数组,值为【“123”,“456”】。 输入参数 用户配置追加到数组变量执行动作,相关参数说明如表1所示。 表1 追加到数组变量输入参数说明 参数 说明 变量名 选择参数类型(暂无数据)。 值 设定参数的预设值。 输出参数 该执行动作无输出参数。
  • 初始化变量 输入参数 用户配置初始化变量执行动作,如图1所示,相关参数说明如表5所示。 图1 初始化变量 表5 初始化变量参数说明 参数 是否必选 说明 示例 变量名 是 用于指定将要命名的变量的名称。 re 类型 是 变量的类型。目前包含字符串、整数、布尔、浮点数、数组、对象。 字符串 整数 布尔 浮点数 数组 对象 值 否 用于指定该变量的值。 这是一句话 12345 true 3.1415 [1,2,3,4,5] {"key":"value"} 输出参数 该执行动作无输出参数。
  • 追加到字符串变量 需要先定义一个字符串变量,可将值内填写的数据,以字符串的形式追加到字符串变量中。例如,先定义一个变量名为data的变量,类型为字符串,值为Str,使用追加到字符串变量后,可在下拉框内选择data,传入值ing,运行即可获得变量data,类型为字符串,值为String。 输入参数 用户配置追加到字符串变量执行动作,相关参数说明如表2所示。 表2 追加到字符串变量输入参数说明 参数 说明 变量名 选择参数类型(暂无数据)。 值 设定参数的预设值。 输出参数 该执行动作无输出参数。
  • 相关操作 检索卡片资产完成后,您可以执行如表1所示操作。 表1 相关操作 操作 说明 预览卡片 在卡片资产详情界面,选择左上角的卡片缩略图,单击“详情”按钮,可跳转到业务可视化平台,查看卡片的图片详情。 编辑卡片资产信息 在卡片资产详情界面,可编辑卡片资产信息,具体操作参见编辑模型信息。 添加关联应用模型 在卡片资产详情界面,可以添加卡片资产关联的应用模型,具体操作参见新增模型关联关系。 添加标注 在卡片资产详情界面,可以添加卡片资产的标注,具体操作参见添加标注。 添加业务字典 在卡片资产详情界面,可以添加卡片资产的业务字典,具体操作参见添加业务字典。
  • 首页 图1 开天 集成工作台 首页 开天集成工作台的首页包含以下内容: 资源总览 显示集成工作台当前提供的各种资源数量,资源包括我的流、我的连接器、我的流模板、我的屏幕、我的屏幕模板、我的卡片、我的卡片模板和布局。 当资源数量显示为“--”,则表示开通的套餐中未包含该资源。 流启动状态统计 实时统计流的开启数、关闭数、手动流的数据以及流总数。 流运行异常监控 可以查看某段时间内的流运行异常情况,通过异常监控折线图可以查看具体时间点的流运行失败数据,以及某时间段内流运行失败的统计总数和最大数。 我的流 查看我的流数量、已开启的流数量、查看最近编辑的流、快速从模板创建流、通过“创建流”快速进入创建流页面、通过“查看全部流”可以进入我的流页面、通过“查看全部模板”可以进入公共流模板页面。 我的屏幕 查看我的屏幕或我的屏幕模板数量、查看最近编辑的屏幕或我的屏幕模板、快速预览/编辑/删除最近编辑的屏幕或我的屏幕模板、通过“创建屏幕”或“查看全部屏幕”快速进入我的屏幕页面、通过“查看全部屏幕模板”可以进入屏幕模板页面。 我的卡片 查看我的卡片或我的卡片模板数量、查看最近编辑的卡片或我的卡片模板、快速预览/编辑/删除最近编辑的卡片或我的看盘模板、通过“创建卡片”快速进入创建卡片页面、通过“查看全部卡片”可以进入我的卡片页面、通过“查看全部卡片模板”可以进入卡片模板页面。 API生命周期 管理API的整个生命周期,单击API生命周期活动(例如:创建API)可以进入API相应页面。 应用模型 对应用模型进行全面管理,单击应用模型的功能快捷入口(例如:应用模型采集的开始使用)进入相应页面。
  • 模型目录概述 新版模型目录支持对应用元模型进行管理,用户可根据应用元模型信息架构图,查看对应的模型实例数据和关系数据,并对模型和关系进行管理。 实体元模型管理:根据应用元模型信息架构图,单击架构图中的实体节点,查看对应的模型实例数据,并支持创建、编辑、删除实体元模型操作。 关系元模型管理:根据应用元模型信息架构图,单击架构图中的关系节点,查看对应的模型关系数据,并支持查看、新增实体元模型关系。 父主题: 模型目录(新版)
  • PG_EXTENSION PG_EXTENSION系统表存储关于所安装扩展的信息。 GaussDB 默认有以下扩展,即plpgsql、DIST_FDW、FILE_FDW、 LOG _FDW、GC_FDW、DBLINK_FDW、ROACH_API、STREAMING、TSDB、DIMSEARCH、GSREDISTRIBUTE、SECURITY_PLUGIN、GSSTAT_PLUGIN、PKG_DBE_RAW、PKG_DBE_OUTPUT、PKG_DBE_UTILITY和PKG_DBE_XML。该系统表为内部使用,不建议用户使用。 由于规格变更,当前版本已经不再支持DIMSEARCH,请不要使用。 表1 PG_EXTENSION 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 extname name 扩展名。 extowner oid 扩展的所有者。 extnamespace oid 扩展导出对象的名称空间。 extrelocatable boolean 标识此扩展是否可迁移到其他名称空间,true表示可以,false表示不可以。 extversion text 扩展的版本号。 extconfig oid[] 扩展的配置信息。 extcondition text[] 扩展配置信息的过滤条件。 父主题: 系统表
  • 获取驱动包 下载版本的发布包,如表1所示。 表1 驱动包下载列表 版本 下载地址 3.x 驱动包 驱动包校验包 为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下: 上传软件包和软件包校验包到虚拟机(Linux操作系统)的同一目录下。 执行如下命令,校验软件包完整性。 cat GaussDB_driver.zip.sha256 | sha256sum --check 如果回显OK,则校验通过。 GaussDB_driver.zip: OK
  • resilience_threadpool_reject_cond 参数说明:用于控制线程池过载逃生的线程池使用率比例。该参数仅在GUC参数enable_thread_pool和use_workload_manager打开时生效。该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串,长度大于0 该参数分为recover_threadpool_percent、overload_threadpool_percent 2部分,这2个部分的具体含义如下: recover_threadpool_percent:线程池恢复正常状态时的线程池使用率,当线程池使用率小于该值时,停止过载逃生并放开新连接接入,取值为0~INT_MAX,设置为多少表示百分之多少。 overload_threadpool_percent:线程池过载时的线程池使用率,当线程池使用率大于该值时,表示当前线程池已经过载,触发过载逃生kill会话并禁止新连接接入,取值为0~INT_MAX,设置为多少表示百分之多少。 默认值:'0,0',表示关闭线程池逃生功能。 示例: resilience_threadpool_reject_cond = '50,90' 表示线程池使用率超过90%后禁止新连接接入并kill堆积的会话,kill会话过程中线程池使用率下降到50%时停止kill会话并允许新连接接入。 线程池使用率可以通过DBE_PERF.local_threadpool_status视图查询获得;线程池设置的初试线程池线程数目可以通过查询thread_pool_attr参数获得。 该参数如果设置的百分比过小,则会频繁触发线程池过载逃生流程,会使正在执行的会话被强制退出,新连接短时间接入失败,需要根据实际线程池使用情况慎重设置。 use_workload_manager参数关闭的情况下,如果打开bypass_workload_manager,则该参数也会生效,但是因为bypass_workload_manager是SIGHUP类型,reload方式设置后需要重启数据库才会使得当前功能生效。 recover_threadpool_percent和overload_threadpool_percent的值可以同时为0,除此之外,recover_threadpool_percent的值必须要小于overload_threadpool_percent,否则会设置不生效。
  • thread_pool_stream_attr 参数说明:用于控制stream线程池功能的详细属性,stream线程只在DN生效,该参数仅在enable_thread_pool打开后生效,仅sysadmin用户可以访问。该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串,长度大于0 该参数分为4个部分,'stream_thread_num, stream_proc_ratio ,group_num ,cpubind_info',这4个部分的具体含义如下: stream_thread_num:stream线程池中的线程总数,取值范围是0~4096。其中0的含义是数据库根据系统CPU core的数量来自动配置线程池的线程数,如果参数值大于0,线程池中的线程数等于stream_thread_num。线程池大小推荐根据硬件配置设置,计算公式如下:stream_thread_num = CPU核数*3~5,stream_thread_num最大值为4096。 stream_proc_ratio:预留给stream线程的proc数量比例,浮点类型,默认为0.2,预留proc计算方式为:stream_proc_ratio * stream_thread_num。 group_num:线程池中的线程分组个数,取值范围是0~64。其中0的含义是数据库根据系统NUMA组的个数来自动配置线程池的线程分组个数,如果参数值大于0,线程池中的线程组个数等于group_num。thread_pool_stream_attr的group_num需与thread_pool_attr的group_num配置和使用保持一致,若设置为不同值,以thread_pool_attr的group_num为准。 cpubind_info:线程池是否绑核的配置参数。可选择的配置方式有集中:1. '(nobind)' ,线程不做绑核;2. '(allbind)',利用当前系统所有能查询到的CPU core做线程绑核;3. '(nodebind: 1, 2)',利用NUMA组1,2中的CPU core进行绑核;4. '(cpubind: 0-30)',利用0-30号CPU core进行绑核;5. '(numabind: 0-30)',在NUMA组内利用0-30号CPU core进行绑核。该参数不区分大小写。thread_pool_stream_attr的cpubind_info需与thread_pool_attr的cpubind_info配置和使用保持一致,若设置为不同值,以thread_pool_attr的cpubind_info为准。 默认值: stream_thread_num:16 stream_proc_ratio:0.2 group_num、cpubind_info:参见thread_pool_attr。
  • thread_pool_attr 参数说明:用于控制线程池功能的详细属性,该参数仅在enable_thread_pool打开后生效,仅sysadmin用户可以访问。该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串,长度大于0 该参数分为3个部分,'thread_num, group_num, cpubind_info',这3个部分的具体含义如下: thread_num:线程池中的线程总数,取值范围是0~4096。其中0的含义是数据库根据系统CPU core的数量来自动配置线程池的线程数,如果参数值大于0,线程池中的线程数等于thread_num。线程池大小推荐根据硬件配置设置,计算公式如下:thread_num = CPU核数*3~5,thread_num最大值为4096。 group_num:线程池中的线程分组个数,取值范围是0~64。其中0的含义是数据库根据系统NUMA组的个数来自动配置线程池的线程分组个数,如果参数值大于0,线程池中的线程组个数等于group_num。 cpubind_info:线程池是否绑核的配置参数。可选择的配置方式有集中:1. '(nobind)' ,线程不做绑核;2. '(allbind)',利用当前系统所有能查询到的CPU core做线程绑核;3. '(nodebind: 1, 2)',利用NUMA组1,2中的CPU core进行绑核;4. '(cpubind: 0-30)',利用0-30号CPU core进行绑核;5. '(numabind: 0-30)',在NUMA组内利用0-30号CPU core进行绑核。该参数不区分大小写。 默认值: 独立部署:'1024,2,(nobind)'(60核CPU/480G内存,32核CPU/256G内存);'512,2,(nobind)'(16核CPU/128G内存);'256,2,(nobind)'(8核CPU/64G内存);'128,2,(nobind)'(4核CPU/32G内存);'64,2,(nobind)'(4核CPU/16G内存)
  • Psycopg接口参考 Psycopg接口是一套提供给用户的API方法,本节将对部分常用接口做具体描述。 psycopg2.connect() connection.cursor() cursor.execute(query,vars_list) cursor.executemany(query,vars_list) connection.commit() connection.rollback() cursor.fetchone() cursor.fetchall() cursor.close() connection.close() 父主题: 基于Psycopg开发
  • 获取驱动包 下载版本的发布包,如表1所示。 表1 驱动包下载列表 版本 下载地址 3.x 驱动包 驱动包校验包 为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下: 上传软件包和软件包校验包到虚拟机(Linux操作系统)的同一目录下。 执行如下命令,校验软件包完整性。 cat GaussDB_driver.zip.sha256 | sha256sum --check 如果回显OK,则校验通过。 GaussDB_driver.zip: OK
  • 注意事项 如果在建表过程中数据库系统发生故障,系统恢复后可能无法自动清除之前已创建的、大小为0的磁盘文件。此种情况出现概率小,不影响数据库系统的正常运行。 使用JDBC时,支持通过PrepareStatement对DEFAULT值进行参数化设置。 被授予CREATE ANY TABLE权限的用户,可以在public模式和用户模式下创建表。如果想要创建包含serial类型列的表,还需要授予CREATE ANY SEQUENCE创建序列的权限。 XML类型不能作为主键、外键。 表约束个数不能超过32767个。
  • 语法格式 创建表。 CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ({ column_name data_type [ CHARACTER SET | CHARSET charset ] [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] | table_constraint | LIKE source_table [ like_option [...] ] } [, ... ]) [ AUTO_INCREMENT [ = ] value ] [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] [ [DEFAULT] COLLATE [ = ] default_collation ] [ WITH ( {storage_parameter = value} [, ... ] ) ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS } ] [ COMPRESS | NOCOMPRESS ] [ TABLESPACE tablespace_name ]; 其中列约束column_constraint为: [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK ( expression ) | DEFAULT default_expr | GENERATED ALWAYS AS ( generation_expr ) [STORED] | AUTO_INCREMENT | UNIQUE [KEY] index_parameters | ENCRYPTED WITH ( COLUMN_ENCRYPTION_KEY = column_encryption_key, ENCRYPTION_TYPE = encryption_type_value ) | PRIMARY KEY index_parameters | REFEREN CES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中列的压缩可选项compress_mode为: { DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS } 其中表约束table_constraint为: [ CONSTRAINT [ constraint_name ] ] { CHECK ( expression ) | UNIQUE [ index_name ][ USING method ] ( { { column_name | ( expression ) } [ ASC | DESC ] } [, ... ] ) index_parameters | PRIMARY KEY [ USING method ] ( { column_name [ ASC | DESC ] } [, ... ] ) index_parameters | FOREIGN KEY [ index_name ] ( column_name [, ... ] ) REFERENCES reftable [ (refcolumn [, ... ] ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中like选项like_option为: { INCLUDING | EXCLUDING } { DEFAULTS | GENERATED | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | PARTITION | RELOPTIONS | ALL } 其中索引参数index_parameters为: [ WITH ( {storage_parameter = value} [, ... ] ) ] [ USING INDEX TABLESPACE tablespace_name ]
  • 优化建议 UNLOGGED UNLOGGED表和表上的索引因为数据写入时不通过WAL日志机制,写入速度远高于普通表。因此,可以用于缓冲存储复杂查询的中间结果集,增强复杂查询的性能。 UNLOGGED表无主备机制,在系统故障或异常断点等情况下,会有数据丢失风险,因此,不可用来存储基础数据。 TEMPORARY | TEMP 临时表只在当前会话可见,会话结束后会自动删除。 LIKE 新表自动从这个表中继承所有字段名及其数据类型和非空约束,新表与源表之间在创建动作完毕之后是完全无关的。 LIKE INCLUDING DEFAULTS 源表上的字段缺省表达式只有在指定INCLUDING DEFAULTS时,才会复制到新表中。缺省是不包含缺省表达式的,即新表中的所有字段的缺省值都是NULL。 LIKE INCLUDING CONSTRAINTS 源表上的CHECK约束仅在指定INCLUDING CONSTRAINTS时,会复制到新表中,而其他类型的约束永远不会复制到新表中。非空约束总是复制到新表中。此规则同时适用于表约束和列约束。 LIKE INCLUDING INDEXES 如果指定了INCLUDING INDEXES,则源表上的索引也将在新表上创建,默认不建立索引。 LIKE INCLUDING STORAGE 如果指定了INCLUDING STORAGE,则复制列的STORAGE设置会复制到新表中,默认情况下不包含STORAGE设置。 LIKE INCLUDING COMMENTS 如果指定了INCLUDING COMMENTS,则源表列、约束和索引的注释会复制到新表中。默认情况下,不复制源表的注释。 LIKE INCLUDING PARTITION 如果指定了INCLUDING PARTITION,则源表的分区定义会复制到新表中,同时新表将不能再使用PARTITION BY子句。默认情况下,不拷贝源表的分区定义。 列表/哈希分区表暂不支持LIKE INCLUDING PARTITION。 LIKE INCLUDING RELOPTIONS 如果指定了INCLUDING RELOPTIONS,则源表的存储参数(即源表的WITH子句)会复制到新表中。默认情况下,不复制源表的存储参数。 LIKE INCLUDING ALL INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION、INCLUDING RELOPTIONS的内容。 ORIENTATION ROW 创建行存表,行存储适合于OLTP业务,此类型的表上交互事务比较多,一次交互会涉及表中的多个列,用行存查询效率较高。
  • 示例 --创建源表及触发表 gaussdb=# CREATE TABLE test_trigger_src_tbl(id1 INT, id2 INT, id3 INT); gaussdb=# CREATE TABLE test_trigger_des_tbl(id1 INT, id2 INT, id3 INT); --创建触发器函数 gaussdb=# CREATE OR REPLACE FUNCTION tri_insert_func() RETURNS TRIGGER AS $$ DECLARE BEGIN INSERT INTO test_trigger_des_tbl VALUES(NEW.id1, NEW.id2, NEW.id3); RETURN NEW; END $$ LANGUAGE plpgsql; gaussdb=# CREATE OR REPLACE FUNCTION tri_update_func() RETURNS TRIGGER AS $$ DECLARE BEGIN UPDATE test_trigger_des_tbl SET id3 = NEW.id3 WHERE id1=OLD.id1; RETURN OLD; END $$ LANGUAGE plpgsql; gaussdb=# CREATE OR REPLACE FUNCTION TRI_DELETE_FUNC() RETURNS TRIGGER AS $$ DECLARE BEGIN DELETE FROM test_trigger_des_tbl WHERE id1=OLD.id1; RETURN OLD; END $$ LANGUAGE plpgsql; --创建INSERT触发器 gaussdb=# CREATE TRIGGER insert_trigger BEFORE INSERT ON test_trigger_src_tbl FOR EACH ROW EXECUTE PROCEDURE tri_insert_func(); --创建UPDATE触发器 gaussdb=# CREATE TRIGGER update_trigger AFTER UPDATE ON test_trigger_src_tbl FOR EACH ROW EXECUTE PROCEDURE tri_update_func(); --创建DELETE触发器 gaussdb=# CREATE TRIGGER delete_trigger BEFORE DELETE ON test_trigger_src_tbl FOR EACH ROW EXECUTE PROCEDURE tri_delete_func(); --执行INSERT触发事件并检查触发结果 gaussdb=# INSERT INTO test_trigger_src_tbl VALUES(100,200,300); gaussdb=# SELECT * FROM test_trigger_src_tbl; gaussdb=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效。 --执行UPDATE触发事件并检查触发结果 gaussdb=# UPDATE test_trigger_src_tbl SET id3=400 WHERE id1=100; gaussdb=# SELECT * FROM test_trigger_src_tbl; gaussdb=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效 --执行DELETE触发事件并检查触发结果 gaussdb=# DELETE FROM test_trigger_src_tbl WHERE id1=100; gaussdb=# SELECT * FROM test_trigger_src_tbl; gaussdb=# SELECT * FROM test_trigger_des_tbl; //查看触发操作是否生效 --修改触发器 gaussdb=# ALTER TRIGGER delete_trigger ON test_trigger_src_tbl RENAME TO delete_trigger_renamed; --禁用insert_trigger触发器 gaussdb=# ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER insert_trigger; --禁用当前表上所有触发器 gaussdb=# ALTER TABLE test_trigger_src_tbl DISABLE TRIGGER ALL; --删除触发器 gaussdb=# DROP TRIGGER insert_trigger ON test_trigger_src_tbl; gaussdb=# DROP TRIGGER update_trigger ON test_trigger_src_tbl; gaussdb=# DROP TRIGGER delete_trigger_renamed ON test_trigger_src_tbl;
  • 参数说明 CONSTRAINT 可选项,指定此参数将创建约束触发器,即触发器作为约束来使用。除了可以使用SET CONSTRAINTS调整触发器触发的时间之外,这与常规触发器相同。 约束触发器必须是AFTER ROW触发器。 name 触发器名称,该名称不能限定模式,因为触发器自动继承其所在表的模式,且同一个表的触发器不能重名。 对于约束触发器,使用SET CONSTRAINTS修改触发器行为时也使用此名称。 取值范围:符合标识符命名规范的字符串,且最大长度不超过63个字符。 BEFORE 触发器函数是在触发事件发生前执行。 AFTER 触发器函数是在触发事件发生后执行,约束触发器只能指定为AFTER。 INSTEAD OF 触发器函数直接替代触发事件。 event 启动触发器的事件,取值范围包括:INSERT、UPDATE、DELETE或TRUNCATE,也可以通过OR同时指定多个触发事件。 对于UPDATE事件类型,可以使用下面语法指定列: UPDATE OF column_name1 [, column_name2 ... ] 表示当这些列作为UPDATE语句的目标列时,才会启动触发器,但是INSTEAD OF UPDATE类型不支持指定列信息。如果UPDATE OF指定的列包含生成列,当生成列依赖的列是UPDATE语句的目标列时,也会启动触发器。 table_name 需要创建触发器的表名称。 取值范围:数据库中已经存在的表名称。 referenced_table_name 约束引用的另一个表的名称。 只能为约束触发器指定,常见于外键约束。 取值范围:数据库中已经存在的表名称。 DEFERRABLE | NOT DEFERRABLE 约束触发器的启动时机,仅作用于约束触发器。这两个关键字设置该约束是否可推迟。 详细介绍请参见CREATE TABLE。 INITIALLY IMMEDIATE | INITIALLY DEFERRED 如果约束是可推迟的,则这个子句声明检查约束的缺省时间,仅作用于约束触发器。 详细介绍请参见CREATE TABLE。 FOR EACH ROW | FOR EACH STATEMENT 触发器的触发频率。 FOR EACH ROW是指该触发器是受触发事件影响的每一行触发一次。 FOR EACH STATEMENT是指该触发器是每个SQL语句只触发一次。 未指定时默认值为FOR EACH STATEMENT。约束触发器只能指定为FOR EACH ROW。 condition 决定是否实际执行触发器函数的条件表达式。当指定WHEN时,只有在条件返回true时才会调用该函数。 在FOR EACH ROW触发器中,WHEN条件可以通过分别写入OLD.column_name或NEW.column_name来引用旧行或新行值的列。 当然,INSERT触发器不能引用OLD和DELETE触发器不能引用NEW。 INSTEAD OF触发器不支持WHEN条件。 WHEN表达式不能包含子查询。 对于约束触发器,WHEN条件的评估不会延迟,而是在执行更新操作后立即发生。 如果条件返回值不为true,则触发器不会排队等待延迟执行。 function_name 用户定义的函数,必须声明为不带参数并返回类型为触发器,在触发器触发时执行。 arguments 执行触发器时要提供给函数的可选的以逗号分隔的参数列表。参数是文字字符串常量,简单的名称和数字常量也可以写在这里,但它们都将被转换为字符串。 请检查触发器函数的实现语言的描述,以了解如何在函数内访问这些参数。 关于触发器种类: INSTEAD OF的触发器必须标记为FOR EACH ROW,并且只能在视图上定义。 BEFORE和AFTER触发器作用在视图上时,只能标记为FOR EACH STATEMENT。 TRUNCATE类型触发器仅限FOR EACH STATEMENT。 表1 表和视图上支持的触发器种类: 触发时机 触发事件 行级 语句级 BEFORE INSERT/UPDATE/DELETE 表 表和视图 TRUNCATE 不支持 表 AFTER INSERT/UPDATE/DELETE 表 表和视图 TRUNCATE 不支持 表 INSTEAD OF INSERT/UPDATE/DELETE 视图 不支持 TRUNCATE 不支持 不支持 表2 plpgsql类型触发器函数特殊变量: 变量名 变量含义 NEW INSERT及UPDATE操作涉及tuple信息中的新值,对DELETE为空。 OLD UPDATE及DELETE操作涉及tuple信息中的旧值,对INSERT为空。 TG_NAME 触发器名称。 TG_WHEN 触发器触发时机(BEFORE/AFTER/INSTEAD OF)。 TG_LEVEL 触发频率(ROW/STATEMENT)。 TG_OP 触发操作(INSERT/UPDATE/DELETE/TRUNCATE)。 TG_RELID 触发器所在表OID。 TG_RELNAME 触发器所在表名(已废弃,现用TG_TABLE_NAME替代)。 TG_TABLE_NAME 触发器所在表名。 TG_TABLE_SCHEMA 触发器所在表的SCHEMA信息。 TG_NARGS 触发器函数参数个数。 TG_ARGV[] 触发器函数参数列表。
共100000条