oracle建表语句,id是自动增长,要完整的建表语句

本文介绍在不同数据库系统如Oracle、MySQL及DB2中实现自增主键的方法,包括序列(sequence)、触发器(trigger)及AUTO_INCREMENT关键字的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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   ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值