更新时间:2026-07-28 GMT+08:00
分享

DDL

ROWID表创建和删除(astore+非段页式+非分区表为例):

--步骤1: 创建ROWID表
gaussdb=# CREATE TABLE t1 (c1 INT) WITH (storage_type = ASTORE, segment = OFF, hasrowid = ON);
CREATE TABLE
--步骤2: 观察到创建的ROWNO序列、ROWNO索引对象
gaussdb=# \d
                                                 List of relations
 Schema |  Name  |   Type   | Owner |                                   Storage                                    
--------+--------+----------+-------+------------------------------------------------------------------------------
 public | t1     | table    | Mike  | {orientation=row,storage_type=astore,segment=off,hasrowid=on,compression=no}
 public | t1_seq | sequence | Mike  | 
(2 rows)

gaussdb=# \di
                    List of relations
 Schema |     Name     | Type  | Owner | Table | Storage 
--------+--------------+-------+-------+-------+---------
 public | t1_rowno_idx | index | Mike  | t1    | 
(1 row)
--步骤3: 执行数据插入和ROWID查询
gaussdb=# INSERT INTO t1 VALUES (1), (2), (3);
INSERT 0 3
gaussdb=# SELECT rowid, rowno, * FROM t1;
             rowid             | rowno | c1 
-------------------------------+-------+----
 AAAAAAAAAP//AAAHvoAAAAAAAAAAB |     1 |  1
 AAAAAAAAAP//AAAHvoAAAAAAAAAAC |     2 |  2
 AAAAAAAAAP//AAAHvoAAAAAAAAAAD |     3 |  3
(3 rows)

gaussdb=# SELECT rowid, rowno, * FROM t1 WHERE rowid = 'AAAAAAAAAP//AAAHvoAAAAAAAAAAC';
             rowid             | rowno | c1 
-------------------------------+-------+----
 AAAAAAAAAP//AAAHvoAAAAAAAAAAC |     2 |  2
(1 row)
--步骤4: 删除ROWID表
gaussdb=# DROP TABLE t1;
DROP TABLE
--步骤5: 观察到ROWNO序列、ROWNO索引对象已被级联删除
gaussdb=# \d
No relations found.
gaussdb=# \di
No relations found.

非ROWID表转换为ROWID表(astore+非段页式+非分区表为例):

--步骤1: 创建非ROWID表
gaussdb=# CREATE TABLE t1 (c1 INT) WITH (storage_type = ASTORE, segment = OFF);
CREATE TABLE
--步骤2: 观察到只有表对象
gaussdb=# \d
                                        List of relations
 Schema | Name | Type  | Owner |                             Storage                              
--------+------+-------+-------+------------------------------------------------------------------
 public | t1   | table | Mike  | {orientation=row,storage_type=astore,segment=off,compression=no}
(1 row)

gaussdb=# \di
No relations found.
--步骤3: 将非ROWID表转换为ROWID表
gaussdb=# ALTER TABLE t1 SET WITH ROWID;
ALTER TABLE
--步骤4: 观察到创建的ROWNO序列、ROWNO索引对象
gaussdb=# \d
                                                 List of relations
 Schema |  Name  |   Type   | Owner |                                   Storage                                    
--------+--------+----------+-------+------------------------------------------------------------------------------
 public | t1     | table    | Mike  | {orientation=row,storage_type=astore,segment=off,compression=no,hasrowid=on}
 public | t1_seq | sequence | Mike  | 
(2 rows)

gaussdb=# \di
                    List of relations
 Schema |     Name     | Type  | Owner | Table | Storage 
--------+--------------+-------+-------+-------+---------
 public | t1_rowno_idx | index | Mike  | t1    | 
(1 row)
gaussdb=# DROP TABLE t1;
DROP TABLE

DDL语法的详细介绍请参见《参考》中“SQL参考 > SQL语法”章节

相关文档