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 ;