oracle 触发器,序列,索引

 
--1,触发器 ----trigger
/*触发器是一种特殊的存储过程,它与数据表紧密联系,用于保护表中的数据,
当一个定义了特定类型触发器的基表执行插入、修改或删除表中数据的操作时,
将自动触发触发器中定义的操作,以实现数据的一致性和完整性。
触发事件: insert,delete,update
触发时间: before, after , 替换:instead of
触发变量: :old ,:new
针对每一行:for each row
*/ ----before insert on stemp --
create or replace trigger tri_insert_stemp
before insert on stemp
begin
dbms_output.put_line('在对表stemp执行insert事件前 执行触发器');
end; ----before delete on
create or replace trigger tri_delete_stemp
before delete on stemp
for each row
begin
----触发变量的使用 ---------- ---------- :old.id
dbms_output.put_line('删除了数据 id='||:old.id||', sname='||:old.sname);
end; ----案例1:(1)创建一个表
create table stempLog(
uname varchar2(30),
ddate date
);
----(2)创建一个触发器
create or replace trigger tri_insert_log
after delete on stemp
for each row
begin
insert into stemplog values(user,sysdate);
end;
/ ----案例2:产品----产品类别 create table ptype(
pid number(8),
pname varchar2(30)
);
insert into ptype values(1,'水果');
insert into ptype values(2,'蔬菜'); create table goods(
gid number(8),
gname varchar2(30),
pid number(8)
);
insert into goods values(1,'芒果',1);
insert into goods values(2,'苹果',1);
insert into goods values(3,'香蕉',1);
insert into goods values(4,'萝卜',2);
insert into goods values(5,'青菜',2);
insert into goods values(6,'菠菜',2); --创建视图,将两张表的数据结合,如果重复就不显示。使用内连接,主键=外键
create view v_goods as
select goods.*,ptype.pname from goods inner join ptype on goods.pid=ptype.pid; ----创建一个 ‘替换’ 触发器
create or replace trigger tri_updateGoods
instead of update on v_goods --对视图进行操作前替换数据
for each row
begin
--修改名字,保留旧的主键
update goods set gname=:new.gname where gid=:old.gid;
update ptype set pname=:new.pname where pid=:old.pid;
end; ----可修改视图数据
update v_goods set gname='芹菜' , pname='有机蔬菜' where gid=5; --2,序列:sequence ----------oracle 的计数器,安规则计数
create table product(
pid number primary key,
pname varchar2(30)
); -----建立序列-------------------------------------------
create sequence PRODUCT_SEQ --序列名
minvalue 1 --最小值
maxvalue 9999999999999999999999999999--最大值
start with 1 --开始的数据
increment by 1 --每次增加1
cache 20; --缓冲大小20M --3,primary key=index +unique
---索引 index 主要的作用是提高查询效率
/*
索引的优点: 提高查询效率
索引的缺点: 降低了数据更新的效率,增加了存储空间
常用查询的栏目才建立索引,并不是所有的位置建立索引都好,而且索引不要超过4个
使用规则: 数据量大,常用的查询栏目上建立索引
*/
create index indexname on tablename(cloumn);
create index index_score on student(score); --在学生的表的分数栏上建立一个叫做index_score的索引

oracle 触发器,序列,索引的更多相关文章

  1. MySQL实现类似Oracle的序列

    MySQL实现类似Oracle的序列 2013-10-22 10:33:35     我来说两句      作者:走过的足迹 收藏    我要投稿 MySQL实现类似Oracle的序列   Oracl ...

  2. Mybatis 插入操作时获取主键 (Oracle 触发器与SEQ)

    1.通过Oracle序列 -- Create sequence create sequence SEQ_DW_EWSYSTEM minvalue 1 maxvalue 9999999999999999 ...

  3. SQL server与Oracle触发器的创建与使用

    SQL Server 1创建触发器 GO BEGIN IF (object_id('WMY', 'tr') is not null) DROP trigger WMY END; GO CREATE T ...

  4. oracle导出序列的几种办法

    oracle导出序列的几种办法 注:本文来源于<oracle导出序列的几种办法> 方法一: select 'create sequence ' ||sequence_name|| ' mi ...

  5. Oracle触发器用法实例详解

    转自:https://www.jb51.net/article/80804.htm. 本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件 ...

  6. ORACLE表、索引和分区详解

    ORACLE表.索引和分区 一.数据库表 每种类型的表都有不同的特性,分别应用与不同的领域 堆组织表 聚簇表(共三种) 索引组织表 嵌套表 临时表 外部表和对象表 1.行迁移 建表过程中可以指定以下两 ...

  7. [转载]Oracle触发器用法实例详解

    本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行. 因此触发器不需要人为的去调用,也 ...

  8. 2014/11/06 Oracle触发器初步 2014-11-06 09:03 49人阅读 评论(0) 收藏

    触发器我就不多解释了,保证数据的完整性的神器,嗯..也是减少程序员工作托管给数据库操作的好帮手.就不讲一些大道理了.通俗点,我们对数据库的操作,无非就是增 删 改 查. 触发器就是在删,改,增的时候( ...

  9. oracle触发器加条件判断

    oracle触发器加条件判断,如果某个字段,isnode=0,那么不执行下面的方法,数据如下: create or replace trigger tr_basestation_insert_emp ...

随机推荐

  1. 20170218-取值Domain

    1.通过视图DD07V, 例子:取SD 凭证类别的DOMAIN(VBTYP)DATA: LT_DD07V TYPE TABLE OF DD07V.SELECT * INTO T_DD07V FROM ...

  2. 注意css 小细节 颜色能缩写尽量缩写

    如 background: #333333; 改为 background: #333;

  3. aop+自定义注解

    自定义注解,并且实现,需要两个文件: 自定义注解类: package com.clc.server.annotation; import java.lang.annotation.ElementTyp ...

  4. python selenium实现百度搜索

    1.环境 python2.7+selenium+phantomjs+linux 2.代码 #-*-coding:utf-8 -*- from selenium import webdriver fro ...

  5. Android font

    ╔════╦════════════════════════════╦═════════════════════════════╗ ║ ║ FONT FAMILY ║ TTF FILE ║ ╠════ ...

  6. mysql 5.5升级到5.7版本操作流程

    一.备份原来 phpStudy 中 MySQL 安装目录 二.把下载的 MySQL 压缩文件解压至 phpStudy 下的 MySQL目录,复制 my-default.ini ,重命名为 my.ini ...

  7. vue+webpack 打包文件 404 页面空白

    最近用vue-cli+vue-router+webpack建立项目,其中的遇到的三个问题,整理如下: vue-cli+ webpack 建立的项目,cnpm run build 打包项目之后,需要放在 ...

  8. 移动端网页巧用 margin和padding 的百分比实现自适应

    一个基础却又容易混淆的css知识点 本文依赖于一个基础却又容易混淆的css知识点:当margin/padding取形式为百分比的值时,无论是left/right,还是top/bottom,都是以父元素 ...

  9. 线程间操作无效: 从不是创建控件“xxxxxxxx”的线程访问它。

    方法一: Control.CheckForIllegalCrossThreadCalls = false; 方法二:(推荐) this.Invoke(new MethodInvoker(() => ...

  10. Android Layout XML属性研究--android:layout_marginBottom (转载)

    转自:http://blog.csdn.net/yanfangjin/article/details/7393023 在如下的xml配置文件中,起初对于android:layout_marginBot ...