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 创建表、定义序列以及创建触发器相关推荐

  1. oracle 创建表定义主键,Oracle 学习----:创建表(主键自增)

    一.创建表 create table testTable ( Id numbere, name varchar2(100), age number, createTime date, primary ...

  2. oracle 一个表上的多个触发器的执行顺序

    oracle 一个表上的多个触发器的执行顺序如下: before statement trigger->before row trigger->after row trigger-> ...

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

    数据库oracle和mysql插入数据的区别? mysql数据库主键字段是increament,则插入数据不需要插入主键字段.数据库会自动生成主键 oracle数据库主键字段必须创建序列,则插入数据必 ...

  4. Oracle之创建表、序列、索引和视图

    本文主要包括:  · 创建.修改和删除表  · 如何创建并使用序列:序列可以生成一系列数字 · 如何创建并使用索引:索引可以提高查询的性能  · 如何创建并使用视图:视图是预定义的查询  · 闪回数据 ...

  5. SQL那些事儿(四)--oracle创建表空间、用户创建

    默认用户为  sys as sysdba,可直接登陆 1.select tablespace_name,file_id, file_name,round(bytes/(1024*1024),0) to ...

  6. 如何在linux下创建表空间,linux下创建oracle表空间

    来自:http://blog.sina.com.cn/s/blog_62192aed01018aep.html 1 . 登录服务器 2 . 查看磁盘空间是否够大df -h -h更具目前磁盘空间和使用情 ...

  7. Db2: db2look导出的表定义无法用于创建表-SQL1860N Reason code = “5“

    问题描述: 使用db2look导出表定义,然后再使用该定义创建表报错 SQL1860N RC=5,导出的表定义如下: db2 "CREATE TABLE mqs20201208 (      ...

  8. 创建表空间oracle10g,Oracle10g创建表空间慢问题

    系统环境 CPU info: Number of CPUs = 4 Clock speed = 1595 MHz Bus speed = 532 MT/s CPUID registers vendor ...

  9. mysql用命令行创建表_mysql命令行创建表

    命令来查看表中的数据的变化: mysql>select*from students; 7.用文本方式将数据装入一个数据库表: 创建一个文本文件"student.sql",每行 ...

最新文章

  1. Android中实现一个简单的逐帧动画(附代码下载)
  2. 双击程序后系统弹框“您无权访问此程序”的解决办法
  3. python数组扩充_【Python】Numpy扩充数组函数之repeat和tile用法,
  4. 深入浅出MySQL出版了
  5. [转载] python获取set中某些元素_取集合中元素_Python Set集合
  6. Mac OS用Anaconda安装Jupyter Notebook
  7. Android studio - UI 界面设计(仿问卷星登陆注册界面)
  8. 【python】jiaba分词,停用词分享,stopwords
  9. java纳秒级时间戳_golang的time包:秒、毫秒、纳秒时间戳输出方式
  10. python小程序表白
  11. 如何区别同质化,实现差异化?
  12. HDOJ Saving HDU JAVA 2111
  13. 解决在iOS9上安装的软件显示未受信任的企业级开发者
  14. tickeys 1.1.0 中文版 (键盘打字音效模拟)
  15. 【matlab教程】11、动态数组
  16. python3字典的应用方法及技巧
  17. 2022年了,虚拟内存还是那个虚拟内存吗?
  18. 路由器AP、中继、桥接等模式区别
  19. 【cmd命令】查看端口占用情况
  20. 原创 | ArcGIS保存MXD的3个注意事项

热门文章

  1. 数组逆序重放c语言,计算概论(A)/基础编程练习2(8题)/6:数组逆序重放
  2. Html转义字符表详细记录
  3. 新房装修|选空调挂机还是中央空调?
  4. signature=a335cd7040789f936f75c72e4ba37676,浅谈新教材Reading的整体教学
  5. intent.setComponent()方法
  6. html 和css常见的面试题
  7. 974. Subarray Sums Divisible by K [Medium]
  8. Deep Audio-Visual Speech Recognition翻译
  9. 大公司研发部门普遍存在的问题(日常吐槽)
  10. 少儿编程scratch课程-海底世界