Mysql和Oracle实现序列自增

Mysql和Oracle实现序列自增Mysql 和 Oracle 实现序列自增 ORACLE 设置自增序列 oracle 本身不支持如 mysql 的 AUTO INCREMENT 自增方式 我们可以用序列加触发器的形式实现 假如有一个表 T WORKMATES 我们需要让学号 PNO 自增

欢迎大家来到IT世界,在知识的湖畔探索吧!

Mysql和Oracle实现序列自增

/*ORACLE设置自增序列

oracle本身不支持如mysql的AUTO_INCREMENT自增方式,我们可以用序列加触发器的形式实现,

假如有一个表 T_WORKMATES,我们需要让学号PNO自增*/

–创建序列 SEQ_PNO

CREATE SEQUENCE SEQ_PNO

minvalue 1 –最小值为1

nomaxvalue –不设置最大值

START WITH 1 –从1开始计数

INCREMENT BY 1 –每次加1个

nocycle –一直累加,不循环

nocache;–不建缓冲区

–创建触发器TRI_PNO

CREATE

OR REPLACE TRIGGER TRI_PNO

BEFORE INSERT ON T_WORKMATES REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW

BEGIN

SELECT

SEQ_PNO.NEXTVAL INTO : NEW.PNO

FROM

DUAL;

END TRI_PNO;

—创建表

CREATE TABLE T_WORKMATES (

PNO INT ,

PNAME VARCHAR(100) NOT NULL,

PSEX VARCHAR(40)

) ;

–插入数据

INSERT INTO T_WORKMATES (PNO,PNAME,PSEX) VALUES (”,’王盼东’,’男’ ) ;

INSERT INTO T_WORKMATES (PNO,PNAME,PSEX) VALUES (”,’刘德华’,’男’ ) ;

INSERT INTO T_WORKMATES (PNO,PNAME,PSEX) VALUES (”,’巩 俐’,’女’ ) ;

–检查数据

SELECT * FROM T_WORKMATES ;

–删除一条数据并插入再重新检查

DELETE FROM T_WORKMATES T WHERE T.PNAME = ‘王盼东’ ;

INSERT INTO T_WORKMATES (PNO,PNAME,PSEX) VALUES (”,’王盼东’,’男’ ) ;

SELECT * FROM T_WORKMATES ;

Mysql和Oracle实现序列自增

欢迎大家来到IT世界,在知识的湖畔探索吧!

–我们发现删除再插入其序列还是一直增加的,这个是因为我们设置的序列只有自增功能,我们删除了数据并不影响序列的自增

/*mysql可以直接用AUTO_INCREMENT实现自增,方法如下*/

–创建数据表,对PNO序列进行自增

CREATE TABLE IF NOT EXISTS T_WORKMATES (

`PNO` INT UNSIGNED AUTO_INCREMENT,

`PNAME` VARCHAR(100) NOT NULL,

`PSEX` VARCHAR(40) NOT NULL,

PRIMARY KEY ( `PNO` )

) ENGINE=INNODB DEFAULT CHARSET=UTF8 ;

— 插入数据

INSERT INTO T_WORKMATES ( PNAME , PSEX) VALUES (‘王盼东’,’男’);

INSERT INTO T_WORKMATES ( PNAME , PSEX) VALUES (‘刘德华’,’男’);

INSERT INTO T_WORKMATES ( PNAME , PSEX) VALUES (‘巩 俐’,’女’);

–查询插入数据

SELECT * FROM t_workmates ;

–删除一条数据并插入再次查询

DELETE FROM T_WORKMATES WHERE PNAME = ‘刘德华’ ;

INSERT INTO T_WORKMATES ( PNAME , PSEX) VALUES (‘刘德华’,’男’);

SELECT * FROM T_WORKMATES ;

Mysql和Oracle实现序列自增

–我们发现删除再插入其序列还是一直增加的,这个是因为我们设置的序列只有自增功能,我们删除了数据并不影响序列的自增

Mysql 创建表的时候可以用IF NOT EXISTS 去查询是否有这个数据表,oracle也没有这个功能,我们也可以通过触发器去实现,这个下次再聊

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/110445.html

(0)
上一篇 2025年 2月 21日 下午3:55
下一篇 2025年 2月 21日 下午4:05

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信