返回首页

gbase数据、南大通用产品文档:GBase8s从超级表中删除行

更新日期:2024年09月11日

当您删除超级表的各行时,删除操作的作用域是超级表及其子表。假设您创建超级
表 person,
在其下定义两个子表 employee 和 sales_rep。
下列对 person 表执行的 DELETE 语
句可从 person、employee 和 sales_rep 全部三个表中删除行:
DELETE FROM person
WHERE name ='Walker';
要限制为仅删除超级表的行,您必须使用 DELETE 语句中的 ONLY 关键字。例如,下列
语句仅删除 person 表的行:
DELETE FROM ONLY(person)
WHERE name ='Walker';
重要: 当您从超级表中删除行时,请小心使用,因为对超级表的删除的作用域包括该超级表及
其所有子表。

请求网关直接转发sql 语句到dblink 对象对应的远端数据库执行。
语法格式
passthrough link DBLINK_NAME using ‘SQL_STATEMENT’;
说明

DBLINK_NAME 为dbink 对象的名称;

SQL_STATEMENT 为SQL 语句,即远端数据库执行的SQL 语句;

支持的SQL 语句,除以下支持的SQL 类型外,其它类型的SQL 将报错:
insert into … values…
insert into …select ….
delete
update
truncate
merge
create
drop

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
615
示例
passthrough link testlink using ‘create table t1(a int, b int)’;
passthrough link testlink using ‘insert into t1 values(1,2)’;
passthrough link testlink using ‘update t1 set a=11 where a=1’;
passthrough link testlink using ‘delete from t1 where a=11’;
passthrough link testlink using ‘truncate table t1’;
passthourgh link testlink using ‘drop table t1’;
passthourgh link testlink using ‘select * from t2’ – 报错: SQL command is not supported: ‘select *
from t2’
说明
约束与限制:

dblink 对象对应的网关中的数据源配置的用户需有相应的SQL 执行权限;

只支持自动提交模式。若当前执行passthrough 命令的gclusterd 的session 状态为非自
动提交模式将报错:
Can not join the distributed transaction in session

不支持sql_statement 前面有注释。

DECLARE
p VARCHAR2(30);
n PLS_INTEGER := 37;
BEGIN
FOR j in 2..ROUND(SQRT(n)) LOOP
IF n MOD j = 0 THEN
p := ' is not a prime number';
GOTO print_now;
END IF;
END LOOP;
p := ' is a prime number';
<>
DBMS_OUTPUT.PUT_LINE(TO_CHAR(n) || p);
END;

--Result:
--37 is a prime number

GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 57 -