Oracle 创建表、定义序列以及创建触发器
Oracle 创建表、定义序列以及创建触发器
1. 定义序列
CREATE SEQUENCE <序列名>[MAXVALUE N|NOMAXVALUE][MINVALUE N|NOMINVALUE]
[START WITH N]
[INCREMENT BY N]
[CACHE N|NOCACHE]
[CYCLE|NOCYCLE];
参数说明:
- INCREMENT BY:定义序列的步长,N如果为正值,表示序列是一个递增序列;N如果为负值,表示序列是一个递减序列;如果省略,则默认值为1。
- START WITH:定义序列的起始值,如果省略,则默认值为1。
- MAXVALUE:定义序列生成器能产生的最大值。选项 NOMAXVALUE 是默认选项,代表没有最大值定义,这时对于递增序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。
- MINVALUE:定义序列生成器能产生的最小值。选项 NOMAXVALUE 是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是-10的26次方;对于递增序列,最小值是1。
- CYCLE | NOCYCLE:表示当序列生成器的值达到限制值后是否循环。CYCLE 代表循环,NOCYCLE 代表不循环。
- CACHE:定义存放序列的内存块的大小,默认为20。NOCACHE 表示不对序列进行内存缓冲。
2. 创建触发器
CREATE[OR REPLACE] TRIGGER <触发器名称>-- 触发条件:当向表 XXX 执行插入操作时触发此触发器BEFORE INSERT ON <表名> -- 对每一行都检测是否触发FOR EACH ROW
-- 触发器开始
BEGIN-- 触发器主体内容,在此是取得 <序列名> 的下一个值插入到表 XXXXX 中的 <主键> 字段中SELECT <序列名>.NEXTVAL INTO :NEW.<主键> FROM DUAL;
END;
3. 创建表
CREATE TABLE "STUDENT"
("S_ID" NUMBER (20,0) NOT NULL ENABLE,"S_NO" NUMBER (20,0) DEFAULT '',"S_NAME" VARCHAR2 (255) DEFAULT '',"S_SEX" CHAR(1) DEFAULT '0',"S_BIRTHDAY" DATE,"S_CLASS" NUMBER (20,0) DEFAULT '',"REMARK" VARCHAR2(300) DEFAULT '',"DEL_FLAG" CHAR(1) DEFAULT '0',"CREATE_BY" VARCHAR2 (64) DEFAULT '',"CREATE_TIME" DATE,"UPDATE_BY" VARCHAR2 (64) DEFAULT '',"UPDATE_TIME" DATE,
);COMMENT ON TABLE STUDENT IS '学生表';ALTER TABLE STUDENTADD CONSTRAINT PK_S_NO PRIMARY KEY (S_NO);COMMENT ON COLUMN STUDENT.S_ID IS 'ID';
COMMENT ON COLUMN STUDENT.S_NO IS '学号';
COMMENT ON COLUMN STUDENT.S_NAME IS '学生姓名';
COMMENT ON COLUMN STUDENT.S_SEX IS '学生性别';
COMMENT ON COLUMN STUDENT.S_BIRTHDAY IS '学生出生年月';
COMMENT ON COLUMN STUDENT.S_CLASS IS '学生所在班级';
COMMENT ON COLUMN STUDENT.REMARK IS '备注';
COMMENT ON COLUMN STUDENT.DEL_FLAG IS '删除标志(0代表存在 2代表删除)';
COMMENT ON COLUMN STUDENT.CREATE_BY IS '创建者';
COMMENT ON COLUMN STUDENT.CREATE_TIME IS '创建时间';
COMMENT ON COLUMN STUDENT.UPDATE_BY IS '更新者';
COMMENT ON COLUMN STUDENT.UPDATE_TIME IS '更新时间';-- 创建序列
CREATE SEQUENCE SEQ_STUDENT_S_IDMINVALUE 1MAXVALUE 9999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;-- 创建触发器
CREATE TRIGGER TRG_STUDENT_S_IDBEFORE INSERT ON STUDENTFOR EACH ROW
BEGINSELECT SEQ_STUDENT_S_ID.NEXTVAL INTO :NEW.S_ID FROM DUAL;
END;
4. 获取上一个插入数据的id
DECLARE newID NUMBER(20);
begin
insert into STUDENT ("S_NO", "S_NAME") values(001, "张XXX") RETURNING S_ID INTO newID;
COMMIT;
insert into SCORE("S_ID", "DEGREE") values(newID, 89);
end;
Oracle 创建表、定义序列以及创建触发器相关推荐
- oracle 创建表定义主键,Oracle 学习----:创建表(主键自增)
一.创建表 create table testTable ( Id numbere, name varchar2(100), age number, createTime date, primary ...
- oracle 一个表上的多个触发器的执行顺序
oracle 一个表上的多个触发器的执行顺序如下: before statement trigger->before row trigger->after row trigger-> ...
- oracle创建表,序列,触发器,自动生成唯一主键
数据库oracle和mysql插入数据的区别? mysql数据库主键字段是increament,则插入数据不需要插入主键字段.数据库会自动生成主键 oracle数据库主键字段必须创建序列,则插入数据必 ...
- Oracle之创建表、序列、索引和视图
本文主要包括: · 创建.修改和删除表 · 如何创建并使用序列:序列可以生成一系列数字 · 如何创建并使用索引:索引可以提高查询的性能 · 如何创建并使用视图:视图是预定义的查询 · 闪回数据 ...
- SQL那些事儿(四)--oracle创建表空间、用户创建
默认用户为 sys as sysdba,可直接登陆 1.select tablespace_name,file_id, file_name,round(bytes/(1024*1024),0) to ...
- 如何在linux下创建表空间,linux下创建oracle表空间
来自:http://blog.sina.com.cn/s/blog_62192aed01018aep.html 1 . 登录服务器 2 . 查看磁盘空间是否够大df -h -h更具目前磁盘空间和使用情 ...
- Db2: db2look导出的表定义无法用于创建表-SQL1860N Reason code = “5“
问题描述: 使用db2look导出表定义,然后再使用该定义创建表报错 SQL1860N RC=5,导出的表定义如下: db2 "CREATE TABLE mqs20201208 ( ...
- 创建表空间oracle10g,Oracle10g创建表空间慢问题
系统环境 CPU info: Number of CPUs = 4 Clock speed = 1595 MHz Bus speed = 532 MT/s CPUID registers vendor ...
- mysql用命令行创建表_mysql命令行创建表
命令来查看表中的数据的变化: mysql>select*from students; 7.用文本方式将数据装入一个数据库表: 创建一个文本文件"student.sql",每行 ...
最新文章
- Android中实现一个简单的逐帧动画(附代码下载)
- 双击程序后系统弹框“您无权访问此程序”的解决办法
- python数组扩充_【Python】Numpy扩充数组函数之repeat和tile用法,
- 深入浅出MySQL出版了
- [转载] python获取set中某些元素_取集合中元素_Python Set集合
- Mac OS用Anaconda安装Jupyter Notebook
- Android studio - UI 界面设计(仿问卷星登陆注册界面)
- 【python】jiaba分词,停用词分享,stopwords
- java纳秒级时间戳_golang的time包:秒、毫秒、纳秒时间戳输出方式
- python小程序表白
- 如何区别同质化,实现差异化?
- HDOJ Saving HDU JAVA 2111
- 解决在iOS9上安装的软件显示未受信任的企业级开发者
- tickeys 1.1.0 中文版 (键盘打字音效模拟)
- 【matlab教程】11、动态数组
- python3字典的应用方法及技巧
- 2022年了,虚拟内存还是那个虚拟内存吗?
- 路由器AP、中继、桥接等模式区别
- 【cmd命令】查看端口占用情况
- 原创 | ArcGIS保存MXD的3个注意事项
热门文章
- 数组逆序重放c语言,计算概论(A)/基础编程练习2(8题)/6:数组逆序重放
- Html转义字符表详细记录
- 新房装修|选空调挂机还是中央空调?
- signature=a335cd7040789f936f75c72e4ba37676,浅谈新教材Reading的整体教学
- intent.setComponent()方法
- html 和css常见的面试题
- 974. Subarray Sums Divisible by K [Medium]
- Deep Audio-Visual Speech Recognition翻译
- 大公司研发部门普遍存在的问题(日常吐槽)
- 少儿编程scratch课程-海底世界