Oracle 设置主键自增长
如果想在Oracle数据库里实现数据表主键自增,我们似乎没有办法像MySql般直接定义列的属性来实现。不过对于这个数据库的常用功能,我们还是有办法实现的。这里将展示使用触发器来实现主键自增。
1.准备
创建UserInfo表,结构如下:
CREATE TABLE UserInfo
(
  id NUMBER(10) NOT NULL,
  username VARCHAR2(15) NOT NULL,
  password VARCHAR2(15) NOT NULL,
  CONSTRAINTS PF_UserInfo PRIMARY KEY(id) --创建主键约束
);
创建一个用于自增的序列(requence)
CREATE SEQUENCE Tab_UserInfo_Sequence
START WITH 1
MINVALUE 1
MAXVALUE 999999999
INCREMENT BY 1
CACHE 20;2.触发器
CREATE OR REPLACE TRIGGER Tig_UserInfo_Insert
BEFORE INSERT ON UserInfo         --插入动作触发器
FOR EACH ROW WHEN(new.id IS NULL) --id值为null时触发
BEGIN
  select Tab_UserInfo_Sequence.nextval into :new.id from dual;   --插入序列值到id值
END;3.测试用例
INSERT INTO UserInfo(username, password) VALUES('aaa', '111');
INSERT INTO UserInfo(username, password) VALUES('bbb', '222');
INSERT INTO UserInfo(username, password) VALUES('ccc', '333');查看表数据,结果如下: 

4.END
至此,使用触发器设置主键自增已完成。
Oracle 设置主键自增长的更多相关文章
- Oracle 设置主键自增长__Oracle
		转自:https://yq.aliyun.com/ziliao/258074 如果想在Oracle数据库里实现数据表主键自增,我们似乎没有办法像MySql般直接定义列的属性来实现.不过对于这个数据库的 ... 
- Oracle设置主键自增长
		第一步:为表设置主键 第二步:新建序列 CREATE SEQUENCE SQ.SEQ_INCREASE START WITH 12 MAXVALUE 999 MINVALUE 0 INCREME ... 
- 使用pl/sql的文本导入器时如何设置主键自增长
		在使用文本导入器批量导入数据时,如果需要设置主键自增长,可以先创建一个序列: create sequence SEQ_Userinf start with 1 increment by 1nomaxv ... 
- SQLServer          ---------   设置主键自增长
		设置主键自增长的两种方式 1.通过图形化的的操作方法进行设置 新建的时候进行设置 第二种是右击设计对已经建好的表进行设置 设置主键 设置自增长 标识增量标识每次自增加多少 标识种子标识从多少开始自 ... 
- Oracle实现主键自增长
		-- 主键设置:xx_id number(24) primary key 1 create sequence XX_seq --序列名称 increment by 1 -- 每次加几个 start - ... 
- mybatis配置oracle的主键自增长
		引用自:https://hacpai.com/article/1405392025960 mysql.sqlserver等数据库本身带有主键自增长像auto_increment的功能可以直接使用 us ... 
- MySQL的常用命令:添加外键,修改字段名称,增加字段  设置主键自增长等
		Mysql命令添加外键 前提是有这么几个表 以mall_product 和 mall_category为例 ALTER TABLE mall_product ADD CONSTRAINT fore_ ... 
- 关于oracle设置主键自增的问题
		关于orcale设置主键自增的问题 关于主键Oracle中并没有提供一个直接的语句设置,对于这个oralce一般都是用序列和触发器来实现 一下又两种方法来实现 一 ,不使用触发器 创建序列: crea ... 
- oracle表设置主键自增长
		create or replace table TBL_SYS_USER ( user_id NUMBER(19) not null, user_name ... 
随机推荐
- NOIP2016 Day1 T2 天天爱跑步(树上差分,LCA)
			原文链接 原题链接 题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏 ... 
- Linux日常之命令awk
			参考:http://www.zsythink.net/archives/tag/awk/ 一. 命令awk简介 1. awk是一种编程语言,用于对文本和数据进行处理的 2. 具有强大的文本格式化能力 ... 
- JS文件上传代码
			var formData = new FormData(); formData.append("file",$("#File1")[0].files[0]); ... 
- springmvc后台获取表单提交的数据——@ModelAttribute等方式
			1.通过注解ModelAttribute直接映射表单中的参数到POJO.在from中的action写提交的路径,在input的name写参数的名称. package com.demo.model; p ... 
- tornado框架自定义中间件过程中的一些基础技术(1)
			为了检查当前请求是否在用户的权限列表中,我们需要获取uri(也就是当前链接),下列代码说明了获取的过程,也证明了python魔术方法的重要性class testHandler(RequestHandl ... 
- java中简单的反射
			1.为什么会用到反射机制? 最近需要写定时服务,如果一个一个去写定时服务的话,后期维护是很烦人的,通过反射机制,我们就可以将定时服务的信息通过数据配置来实现,这样我们后期就可以将整个模块交给运维人员去 ... 
- mysql 导出导入数据库(Mysqldump)备份
			使用mysql不熟练啊!!! mysqldump导出数据库,必须以cmd命令行的形式,在Navicat中以新建查询形式使用Mysqldump不好使的.(本来使用Navicat转储SQL,再导入SQL, ... 
- .net上传超大文件解决方案
			HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ... 
- Codevs 1017 乘积最大  2000年NOIP全国联赛普及组NOIP全国联赛提高组
			1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 今年是国 ... 
- codevs   2010 求后序遍历x
			题目描述 Description 输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列. 输入描述 Input Description 共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串, ... 
