MYSQL数据库中使用自动编号是哪个字段类型

MYSQL数据库中使用自动编号是哪个字段类型,第1张

Oracle

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

需要创建一个序列 SEQUENCE。

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

设置好触发器以后,所有的插入语句,将忽略外部传入的 id 数据,只使用指定的序列号来产生。

SQL>CREATE SEQUENCE test_sequence2

2increment by 1-- 每次递增1

3start with 1 -- 从1开始

4nomaxvalue -- 没有最大值

5minvalue 1 -- 最小值=1

6NOCYCLE -- 不循环

Sequence created.

SQL>CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert

2BEFORE INSERT ON test_create_tab2

3 FOR EACH ROW

4 BEGIN

5SELECT 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 Server

通过 IDENTITY 来设置

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

默认情况下 INSERT 语句中,不能对 IDENTITY 的字段进行赋值。

1>CREATE TABLE test_create_tab2 (

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

3> val VARCHAR(10)

4>)

5>go

1>INSERT INTO test_create_tab2(val) VALUES ('NO id')

2>go

(1 行受影响)

MySQL

通过

AUTO_INCREMENT设置

SQL INSERT语句的时候,要避免 指定那个自增的字段

否则会发生主键的冲突。

mysql>CREATE TABLE test_create_tab2 (

-> id INT AUTO_INCREMENT,

-> val VARCHAR(10),

-> PRIMARY KEY (id)

->)

->//

Query OK, 0 rows affected (0.08 sec)

mysql>INSERT INTO test_create_tab2(val) VALUES ('NO id')

->//

Query OK, 1 row affected (0.03 sec)

MYSQL里面INT类型的数据有auto_increament这个属性,即自增列,你可以指定一个数字,然后每插入一条数据,如果不指定具体的值,该列的值就是当前该列的最大值加上一个间隔,可以指定这个属性的初值以及每次自动加的间隔大小,默认是从0开始,每次加1。


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

原文地址: http://outofmemory.cn/zaji/7282962.html

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

发表评论

登录后才能评论

评论列表(0条)

保存