MySQL、PostgreSQL、Oracle、SQL Server四大数据库对比
方式一 序列 + 默认值
- 建序列
CREATE SEQUENCE seq_name
[minvalue 1 maxvalue 9223372036854775807[long最大值] 或 NOMAXvalue[不设置最大值]]
START WITH 1
INCREMENT BY 1
NOCACHE;
- 建表
CREATE TABLE table_name (
id NUMBER DEFAULT seq_name.NEXTVAL PRIMARY KEY,
...
);
方式二 序列 + 触发器
- 建序列同上
- 建表
CREATE TABLE table_name (
id NUMBER,
...
);
- 建触发器
- 方式一
CREATE OR REPLACE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
:NEW.id := seq_name.NEXTVAL;
END;
- 方式二
CREATE OR REPLACE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
SELECT seq_name.nextval INTO :new.id FROM dual;
END;