返回首页

gbase数据、南大通用产品文档:GBase8cPG_CONSTRAINT

更新日期:2024年09月11日

PG_CONSTRAINT 系统表存储表上的检查约束、主键和唯一约束。
名称
类型
描述
oid
oid
行标识符(隐含属性,必须明确选择)。
conname
name
约束名称(不一定是唯一的)。
connamespace
oid
包含这个约束的名称空间的OID。
contype
“char”
c = 检查约束。
p = 主键约束。
u = 唯一约束。
t = 触发器约束。
condeferrable
boolean
这个约束是否可以推迟。
condeferred
boolean
缺省时这个约束是否可以推迟。
convalidated
boolean
约束是否有效。目前,只有外键和CHECK 约束可
将其设置为FALSE。
conrelid
oid
这个约束所在的表;如果不是表约束则为0。
contypid
oid
这个约束所在的域;如果不是一个域约束则为0。
conindid
oid
与约束关联的索引ID。
confrelid
oid
如果是外键,则为参考的表;否则为0。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
777
名称
类型
描述
confupdtype
“char”
外键更新动作代码。
a = 没动作。
r = 限制。
c = 级联。
n = 设置为null。
d = 设置为缺省。
confdeltype
“char”
外键删除动作代码。
a = 没动作。
r = 限制。
c = 级联。
n = 设置为null。
d = 设置为缺省。
confmatchtype
“char”
外键匹配类型。
f = 全部。
p = 部分。
u = 未指定(在f 的基础上允许匹配NULL 值)。
conislocal
boolean
是否是为关系创建的本地约束。
coninhcount
integer
约束直接继承父表的数目。继承父表数非零时,不
能删除或重命名该约束。
connoinherit
boolean
是否可以被继承。
consoft
boolean
是否为信息约束(Informational Constraint)。
conopt
boolean
是否使用信息约束优化执行计划。
conkey
smallint[]
如果是表约束,则是约束控制的字段列表。
confkey
smallint[]
如果是一个外键,是参考的字段的列表。
conpfeqop
oid[]
如果是一个外键,
是做PK=FK 比较的相等操作符I
D 的列表。
conppeqop
oid[]
如果是一个外键,
是做PK=PK 比较的相等操作符I
D 的列表。
conffeqop
oid[]
如果是一个外键,
是做FK=FK 比较的相等操作符I
D 的列表。由于当前不支持外键,所以值为空。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
778
名称
类型
描述
conexclop
oid[]
如果是一个排他约束,是列的排他操作符ID 列表。
conbin
pg_node_tre
e
如果是检查约束,那就是其表达式的内部形式。
consrc
text
如果是检查约束,则是表达式的人类可读形式。
conincluding
smallint[]
不用做约束,但是会包含在INDEX 中的属性列。
须知:
consrc 在被引用的对象改变之后不会被更新,
它不会跟踪字段的名称修改。与其依赖这
个字段,最好还是使用pg_get_constraintdef()来抽取一个检查约束的定义。
pg_class.relchecks 需要和在此表上为给定关系找到的检查约束的数目一致。

bigintcvdbl() 函数将 double 类型数值转换为 BIGINT 类型数值。

语法
mint bigintcvdbl(dbl, bigintp)
const double dbl
bigint *bigintp
dbl

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 604 -

要转换为 bigint 的 double 值。
bigintp
指向包含转换的结果的 bigint 变量的指针。

返回代码
0
转换成功。
<0
转换失败。

发布订阅基于逻辑复制实现,
继承所有逻辑复制的限制,
同时发布订阅还有下列额外的
限制或者缺失的功能。

数据库模式和DDL 命令不会被复制。初始模式可以手工使用gs_dump –schema-only 进
行拷贝。后续的模式改变需要手工保持同步。

序列数据不被复制。后台由序列支撑的serial 或者标识列中的数据当然将被作为表的一
部分复制,
但是序列本身在订阅者上仍将显示开始值。
如果订阅者被用作一个只读数据
库,那么这通常不会是什么问题。不过,如果订阅者数据库预期有某种转换或者容错,
那么序列需要被更新到最后的值,要么通过从发布者拷贝当前数据的防范(也许使用
gs_dump),要么从表本身决定一个足够高的值。

只有表支持复制,包括分区表。试图复制其他类型的关系,例如视图、物化视图或外部
表,将会导致错误。

同一数据库内的多个订阅不应当订阅内容重复的发布(指发布相同的表)
,否则会产生
数据重复或者主键冲突。

如果被发布的表中包含不支持btree/hash 索引的数据类型(如地理类型等),那么该表
需要有主键,才能成功的复制UPDATE/DELETE 操作到订阅端。否则复制会失败,同
时订阅端会出现“FATAL: could not identify an equality operator for type xx”的日志。

使用gs_probackup 备份发布端时,
由于gs_probackup 工具本身不支持备份逻辑复制槽,
所以备份恢复后,
会由于逻辑复制槽不存在,
而使得原有的发布订阅关系无法正常建立。
建议使用gs_basebackup 工具备份发布端。