定位 发表于 2016-11-20 14:16:29

oracle建表,id自动增长

SQL> CREATE SEQUENCE test_sequence2
  2    increment by 1    -- 每次递增1
  3    start with 1       -- 从1开始
  4    nomaxvalue      -- 没有最大值
  5    minvalue 1       -- 最小值=1
  6    NOCYCLE;      -- 不循环

Sequence created.

SQL> CREATE TABLE test_create_tab2 (
  2    id   INT,
  3    val  VARCHAR(10),
  4    PRIMARY KEY (id)
  5  );

Table created.

SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert
  2    BEFORE INSERT ON test_create_tab2
  3  FOR EACH ROW
  4  BEGIN
  5    SELECT test_sequence2.nextval INTO :new.id  FROM dual;
  6  END;
  7  /

Trigger created.

SQL> INSERT INTO test_create_tab2(val) VALUES ('NO id');

1 row created.

SQL> INSERT INTO test_create_tab2(id, val) VALUES (1, 'id no use');

1 row created.

SQL> SELECT * FROM test_create_tab2;

        ID VAL
---------- --------------------
         1 NO id     
         2 id no use

用于 MySQL 的语法
下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键:
CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
//接在建表语句后面AUTO_INCREMENT = 100;(ID列从100开始自增)
MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。
默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。
要让 AUTO_INCREMENT 序列以其他的值起始,请使用下列 SQL 语法:
ALTER TABLE Persons AUTO_INCREMENT=100

要在 "Persons" 表中插入新记录,我们不必为 "P_Id" 列规定值(会自动添加一个唯一的值):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')
上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"P_Id" 会被赋予一个唯一的值。"FirstName" 会被设置为 "Bill","LastName" 列会被设置为 "Gates"。

DB2中是这样写的
Create table FA_EXCEPTION_LOG (
    ID                             INTEGER             NOT NULL   
        generated by default as identity (start with 1, increment by 1, cache 20),
    ORG_ID                         DECIMAL(10,0)                   ,
    USER_ID                        DECIMAL(10,0)                   ,
    REC_DATETIME                   VARCHAR(22)                     ,
    CODE                           VARCHAR(50)                     ,
    CLS                            VARCHAR(20)                     ,
    MODULAR                        VARCHAR(40)                     ,
    DESCN                          VARCHAR(200)                    ,
    JAVA_EXCE                      VARCHAR(256)                    ,
    ERR_MSG                        VARCHAR(1000)                   )
tablespace TSPCAP4J01   ;

页: [1]
查看完整版本: oracle建表,id自动增长