云数据库 GAUSSDB-CREATE SEQUENCE:示例

时间:2024-11-13 14:46:06

示例

  • 创建一个名为seq1的递增序列,从101开始,步长为10。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    gaussdb=# CREATE SEQUENCE seq1
        START 101
        INCREMENT 10;
    
    --从序列中选出下一个数字:
    gaussdb=# SELECT nextval('seq1');
     nextval 
    ---------
         101
    (1 row)
    gaussdb=# SELECT nextval('seq1');
     nextval 
    ---------
         111
    
    --删除序列。
    gaussdb=# DROP SEQUENCE seq1;
    
  • 表自增列的一种实现。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    --创建表。
    gaussdb=# CREATE TABLE test1(id int PRIMARY KEY, name varchar(20));
    
    --创建与表关联的序列。
    gaussdb=# CREATE SEQUENCE test_seq2
        START 1
        NO CYCLE
        OWNED BY test1.id;
    
    --设置字段的默认值。
    gaussdb=# ALTER TABLE test1 ALTER COLUMN id SET DEFAULT nextval('test_seq2'::regclass);
    
    -- 插入数据。
    gaussdb=# INSERT INTO test1 (name) values ('Joe'),('Scott'),('Ben');
    
    --查询。
    gaussdb=# SELECT * FROM test1;
     id | name  
    ----+-------
      3 | Ben
      1 | Joe
      2 | Scott
    (3 rows)
    
    --删除序列和表。
    gaussdb=# DROP SEQUENCE test_seq2 CASCADE;
    gaussdb=# DROP TABLE test1;
    
  • 序列的循环。
    --创建一个递增序列seq_test1,最大值为3,且可以循环。
    gaussdb=# CREATE SEQUENCE seq_test1
        START 1 
        MAXVALUE 3 
        CYCLE;
    
    --建表,并插数据。
    gaussdb=# CREATE TABLE tbl_test1(
        c1 int DEFAULT nextval('seq_test1'),
        c2 varchar
    );
    gaussdb=# INSERT INTO tbl_test1 (c2) values ('test');
    gaussdb=# INSERT INTO tbl_test1 (c2) values ('test');
    gaussdb=# INSERT INTO tbl_test1 (c2) values ('test');
    gaussdb=# INSERT INTO tbl_test1 (c2) values ('test');
    gaussdb=# INSERT INTO tbl_test1 (c2) values ('test');
    
    --查询表数据,当递增序列seq_test的值达到最大值后会重新从最小值开始。
    gaussdb=# SELECT ctid,* FROM tbl_test1 ORDER BY 1,2;
     ctid  | c1 |  c2  
    -------+----+------
     (0,1) |  1 | test
     (0,1) |  3 | test
     (0,2) |  2 | test
     (0,3) |  1 | test
     (0,4) |  2 | test
    (5 rows)
    
    --删除表和序列。
    gaussdb=# DROP TABLE tbl_test1;
    gaussdb=# DROP SEQUENCE seq_test1;
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0564.html