sql数据库建表时如何实现自动编号

sql数据库建表时如何实现自动编号,第1张

Oracle

不直接支持 自动递增的列。

需要创建一个序列 SEQUENCE。

又由于无法在列的默认值那里,设置默认值为序列。因此只能通过触发器来设置。

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_sequence2nextval INTO :newid FROM dual;

6 END;

7 /

Trigger created

SQL Server

通过 IDENTITY 来设置

参数有2个,一个是“初始值” 一个是“增量”。

1> CREATE TABLE test_create_tab2 (

2> id INT IDENTITY(1, 1) PRIMARY KEY,

3> val VARCHAR(10)

4> );

5> go

MySQL

通过

AUTO_INCREMENT设置

mysql> CREATE TABLE test_create_tab2 (

-> id INT AUTO_INCREMENT,

-> val VARCHAR(10),

-> PRIMARY KEY (id)

-> );

Query OK, 0 rows affected (009 sec)

使用oracle数据库中的关键字sequence来实现目的。

//创建mySeq

create sequence mySeq

start with 1

increment by 2

maxvalue 40

minvalue 1

cycle

//创建用户表

create table USER

(

Id int,

CompName varchar2(20)

)

插入语句可以这样写:

insert into USER values(mySeqnextVal,'AA')

这样的话每次插入的ID就是自动递增的

扩展资料:

sequence用法:

create sequence <序列名称>

start with <起始数>

increment by <增长量>

[maxvalue 值]

[minvalue 值]

[cycle 当到达最大值的时候,将继续从头开始]

[Nocycle -- 一直累加,不循环]

[Cache ]

参考资料:百度百科-oraclesequence

以上就是关于sql数据库建表时如何实现自动编号全部的内容,包括:sql数据库建表时如何实现自动编号、oracle数据库,主键设置为ID,插入语句时,如何自动生成ID并让它顺序增加呢、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9842911.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存