oracle创建表,序列,触发器,自动生成唯一主键

本文介绍了在Oracle数据库中,如何通过创建序列和触发器来模拟MySQL数据库的自动主键增长机制。详细步骤包括创建表、序列设定(如最小值、最大值、增量、起始值、缓存大小和防止循环)以及触发器的建立,以实现在插入数据时自动填充主键字段。

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

数据库oracle和mysql插入数据的区别?

mysql数据库主键字段是increament,则插入数据不需要插入主键字段。数据库会自动生成主键
oracle数据库主键字段必须创建序列,则插入数据必须插入主键字段。数据库根据序列自动生成主键

那么如何让oracle数据库插入数据像mysql一样实现主键自增呢?解决方法是:序列+触发器

1、创建表

CREATE TABLE Student
	(S# varchar2(8) PRIMARY key,
	Sname varchar2(10),
	Ssex CHAR(3) CONSTRAINT ctssex CHECK(Ssex='男' OR Ssex='女'),
	Sage number(2) CHECK(Sage>=1 AND Sage<150)
	D# CHAR(3) REFERENCES Dept(D#) ON DELETE cascade,
	Sclass varchar2(16));
CREATE TABLE Dept
	(D# VARCHAR2(9) PRIMARY key,
	Dname varchar2(30),
	Dean varchar2(30));
CREATE TABLE Course
	(C# varchar2(3) PRIMARY key,
	Cname varchar2(12),
	Chours numbers(2),
	Credit number(3,1) CONSTRAINT ctscredit CHECK(Credit >=0.0 AND Credit <=5.0),
	T# varchar2(3) REFERENCES Teacher(T#) ON DELETE cascade);
CREATE TABLE Teacher
	(T# varchar2(9) PRIMARY key,
	Tname varchar2(10),
	D# varchar2(9),
	Salary number(6,2)
	FOREIGN KEY(D#) REFERENCES Dept(D#) ON DELETE cascade)
CREATE TABLE SC
	(S# varchar2(8) PRIMARY key,
	C# VARCHAR2(3),
	Score number(4,1) CONSTRAINT ctsscore CHECK(Score <=0.0 AND Score <=100.0),
	FOREIGN KEY(S#) REFERENCES Student(S#) ON DELETE cascade,
	FOREIGN KEY(C#) REFERENCES Course(C#) ON DELETE cascade)

2.创建序列

create sequence dept_seq
       start with 1
       increment by 1
       nocache
       nocycle
       order

备注:

minvalue 1 -----最小值
maxvalue 9999999999999999999999999999 ------最大值
increment by 1 -----每次加几个
start with 1 -----从几开始
cache 20 -----缓存值多少
noorder -----一直累加,不排序
nocycle ; --一直累加不循环

3.创建触发器

create or replace trigger i_dept_tg
       before insert on tuster.dept
       for each row
begin
  select to_char(dept_seq.nextval,'fm99') into :new.D# from dual;
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值