
# 全局序列在INSERT或REPLACE语句中的使用
要想在同一个实例下实现跨逻辑库序列的全局唯一，可以在INSERT语句或者REPLACE语句中结合全局序列一起使用。INSERT语句和REPLACE语句支持nextval和currval两个方式序列的获取。其中，nextval表示返回下一个序列值，currval表示返回当前序列值。
可以通过schema.seq.nextval、schema.seq.currval使用，如果不指定schema，默认是当前连接schema下的全局序列。
支持并发获取全局序列，在多session下并发通过schema.seq.nextval获取全局序列能够产生唯一值。
#### 前提条件
- 已有两个逻辑库dml_test_1和dml_test_2。
- 逻辑库dml_test_1和dml_test_2中都有表test_seq。 创建表的方法：
  **create table test_seq(col1 bigint,col2 bigint) dbpartition by hash(col1)；**
  
 
#### 操作步骤
1. 连接DDM实例。 
   连接方法具体请参考[连接DDM实例](https://support.huaweicloud.com/qs-ddm/ddm_02_0005.html)。
   
   
2. 打开dml_test_1逻辑库。 
   **use dml_test_1**;
   
   
3. 输入命令创建全局序列。 
   **create sequence seq_test**；
   ![](https://support.huaweicloud.com/usermanual-ddm/zh-cn_image_0000001074478402.png)
   
   
4. 使用以下语句，实现全局序列在insert语句或者replace语句的使用。 
   **insert into test_seq(col1,col2)values(seq_test.nextval,seq_test.currval)**；
   ![](https://support.huaweicloud.com/usermanual-ddm/zh-cn_image_0000001073772471.png)
   
   
5. 打开dml_test_2逻辑库。 
   **use dml_test_2**;
   
   
6. 使用以下语句，实现全局序列在insert语句或者replace语句的使用。 
   **insert into test_seq(col1,col2)values(dml_test_1.seq_test.nextval,dml_test_1.seq_test.currval)**;
   ![](https://support.huaweicloud.com/usermanual-ddm/zh-cn_image_0000001074160480.png)
   由于全局序列是创建在逻辑库"dml_test_1"下的，在逻辑库"dml_test_2"下使用全局序列需要显式指定逻辑库"dml_test_1.seq_test.nextval"、"dml_test_1.seq_test.currval"。
   ![](https://support.huaweicloud.com/usermanual-ddm/public_sys-resources/note_3.0-zh-cn.png)
   - 全局序列结合insert和replace的使用只支持拆分表，不支持广播表和单表。
   
   - nextval和currval在insert和replace语句中是从左到右执行的，如果一条语句使用同一个全局序列nextval多次，每出现一次就递增一次。
   
   - 全局序列是属于逻辑库的，删除逻辑库，所在删除逻辑库的全局序列也会被删除。
    
   
   
 
