当在 SQL 语句中引用对象时,OceanBase 会考虑 SQL 语句的上下文并在适当的名称空间中找到该对象。找到对象后,OceanBase 执行 SQL 语句对该对象指定的操作。如果在适当的名称空间中找不到命名的对象,则返回错误。
以下示例说明了 OceanBase 如何解析 SQL 语句中对象的引用。
执行以下语句,向名为 departments 的表中添加了一行数据:
INSERT INTO departments
VALUES (280, 'ENTERTAINMENT_CLERK', 206, 1700);
根据 SQL 语句的上下文,departments 在数据库中可能是:
OceanBase 始终会先尝试在您自己的 Schema 中的名称空间里解析被引用对象,然后再考虑该 Schema 之外的名称空间。在此示例中,OceanBase 尝试解析如下:
如果公共同义词包含任何依赖表或用户定义类型,则不能在与依赖对象相同的 Schema 中创建与同义词同名的对象。
反之,如果同义词没有任何依赖表或用户定义的类型,则可以在与依赖对象相同的 Schema 中创建具有相同名称的对象。OceanBase 会使所有依赖对象无效,并在下一次访问它们时重新验证它们。
要引用您的 Schema 之外的 Schema 中的对象,需要在对象名称前添加 Schema 名称:
schema.object
例如,以下示例展示了在名为 hr 的 Schema 中删除表 employees:
DROP TABLE hr.employees;
备案信息: 粤ICP备15087711号-2
Copyright © 2008-2024 啊嘎哇在线工具箱 All Rights.
本站所有资料来源于网络,版权归原作者所有,仅作学习交流使用,如不慎侵犯了您的权利,请联系我们。