新聞中心
當(dāng)在 SQL 語句中引用對象時,OceanBase 會考慮 SQL 語句的上下文并在適當(dāng)?shù)拿Q空間中找到該對象。找到對象后,OceanBase 執(zhí)行 SQL 語句對該對象指定的操作。如果在適當(dāng)?shù)拿Q空間中找不到命名的對象,則返回錯誤。

忠縣網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
引用用戶的 Schema 中的對象
以下示例說明了 OceanBase 如何解析 SQL 語句中對象的引用。
執(zhí)行以下語句,向名為 departments 的表中添加了一行數(shù)據(jù):
INSERT INTO departments
VALUES (280, 'ENTERTAINMENT_CLERK', 206, 1700);根據(jù) SQL 語句的上下文,departments 在數(shù)據(jù)庫中可能是:
- 一張在您自己 Schema 中的表
- 一個在您自己 Schema 中的視圖
- 一個表或視圖的專有同義詞
- 一個公共同義詞
OceanBase 始終會先嘗試在您自己的 Schema 中的名稱空間里解析被引用對象,然后再考慮該 Schema 之外的名稱空間。在此示例中,OceanBase 嘗試解析如下:
- 首先,OceanBase 嘗試在您自己的包含了表、視圖和專用同義詞的 Schema 中的名稱空間里去定位對象。如果對象是專用同義詞,則 OceanBase 會找到該同義詞所代表的對象。該對象可以在您自己的 Schema 中,也可以在其他 Schema 中或者在另一個數(shù)據(jù)庫中。該對象也可以是其他的同義詞,在這種情況下,OceanBase 會找到同義詞所代表的對象。
- 如果對象在名稱空間中被找到,則 OceanBase 嘗試對該對象執(zhí)行 SQL 語句。在此示例中,OceanBase 嘗試將一行數(shù)據(jù)添加到 departments 中。如果此對象的類型不是該 SQL 語句所需要的類型,則 OceanBase 返回錯誤。在此示例中,departments 必須是表、視圖或者可以是可以解析為表或視圖的專用同義詞。如果 departments 是序列,則 OceanBase 返回錯誤。
- 如果該對象到目前為止沒有在任何名稱空間中被搜索到,則 OceanBase 將搜索包含公共同義詞的名稱空間。如果對象在包含公共同義詞的名稱空間中,則 OceanBase 嘗試對該對象執(zhí)行該語句。如果此對象的類型不是該 SQL 語句所需要的類型,則 OceanBase 返回錯誤,例如在此示例中,如果 departments 是一個代表了序列的公共同義詞,那么 OceanBase 將返回錯誤。
如果公共同義詞包含任何依賴表或用戶定義類型,則不能在與依賴對象相同的 Schema 中創(chuàng)建與同義詞同名的對象。
反之,如果同義詞沒有任何依賴表或用戶定義的類型,則可以在與依賴對象相同的 Schema 中創(chuàng)建具有相同名稱的對象。OceanBase 會使所有依賴對象無效,并在下一次訪問它們時重新驗證它們。
引用其他 Schema 中的對象
要引用您的 Schema 之外的 Schema 中的對象,需要在對象名稱前添加 Schema 名稱:
schema.object例如,以下示例展示了在名為 hr 的 Schema 中刪除表 employees:
DROP TABLE hr.employees; 網(wǎng)站欄目:創(chuàng)新互聯(lián)OceanBase教程:OceanBase 引用 Schema 對象
分享路徑:http://www.5511xx.com/article/dhhspeo.html


咨詢
建站咨詢
