DM库中建表语句 要求支持id序列自增,给出具体的DDL语句
时间: 2023-07-04 10:22:50 浏览: 110
在达梦数据库中,可以通过序列(Sequence)和触发器(Trigger)来实现自增功能。具体的DDL语句如下:
1. 创建序列
```
CREATE SEQUENCE seq_xxx
INCREMENT BY 1
START WITH 1
MAXVALUE 999999999999999999999999999
MINVALUE 1
CACHE 20
CYCLE
NOCACHE
NOCYCLE;
```
其中,`seq_xxx`是序列的名称,可以根据实际情况进行修改。`INCREMENT BY 1`表示每次递增的步长为1,`START WITH 1`表示初始值为1,`MAXVALUE`和`MINVALUE`分别表示序列的最大值和最小值,`CACHE 20`表示缓存20个序列值,`CYCLE`表示当序列达到最大值时是否重新循环,`NOCACHE`和`NOCYCLE`表示不缓存和不循环。
2. 创建表并使用序列
```
CREATE TABLE xxx(
id NUMBER(10) PRIMARY KEY,
-- 其他列...
);
CREATE OR REPLACE TRIGGER tri_xxx
BEFORE INSERT ON xxx
FOR EACH ROW
BEGIN
SELECT seq_xxx.NEXTVAL INTO :NEW.id FROM DUAL;
END;
```
其中,`xxx`是表的名称,`id`是自增列的名称,`NUMBER(10)`表示列的数据类型为数字,长度为10。`PRIMARY KEY`表示该列为主键。`tri_xxx`是触发器的名称,`BEFORE INSERT ON xxx`表示在插入数据之前触发,`FOR EACH ROW`表示对每一行数据都触发一次。`SELECT seq_xxx.NEXTVAL INTO :NEW.id FROM DUAL;`表示从序列中获取下一个值,并将其赋值给新插入的行的`id`列。
阅读全文