oracle 触发器,序列,索引

  1 
2 3 --1,触发器 ----trigger 4 /*触发器是一种特殊的存储过程,它与数据表紧密联系,用于保护表中的数据, 5 当一个定义了特定类型触发器的基表执行插入、修改或删除表中数据的操作时, 6 将自动触发触发器中定义的操作,以实现数据的一致性和完整性。 7 触发事件: insert,delete,update 8 触发时间: before, after , 替换:instead of 9 触发变量: :old ,:new 10 针对每一行:for each row 11 */ 12 13 14 ----before insert on stemp -- 15 create or replace trigger tri_insert_stemp 16 before insert on stemp 17 begin 18 dbms_output.put_line('在对表stemp执行insert事件前 执行触发器'); 19 end; 20 21 ----before delete on 22 create or replace trigger tri_delete_stemp 23 before delete on stemp 24 for each row 25 begin 26 ----触发变量的使用 ---------- ---------- :old.id 27 dbms_output.put_line('删除了数据 id='||:old.id||', sname='||:old.sname); 28 end; 29 30 31 ----案例1:(1)创建一个表 32 create table stempLog( 33 uname varchar2(30), 34 ddate date 35 ); 36 ----(2)创建一个触发器 37 create or replace trigger tri_insert_log 38 after delete on stemp 39 for each row 40 begin 41 insert into stemplog values(user,sysdate); 42 end; 43 / 44 45 46 ----案例2:产品----产品类别 47 48 create table ptype( 49 pid number(8), 50 pname varchar2(30) 51 ); 52 insert into ptype values(1,'水果'); 53 insert into ptype values(2,'蔬菜'); 54 55 create table goods( 56 gid number(8), 57 gname varchar2(30), 58 pid number(8) 59 ); 60 insert into goods values(1,'芒果',1); 61 insert into goods values(2,'苹果',1); 62 insert into goods values(3,'香蕉',1); 63 insert into goods values(4,'萝卜',2); 64 insert into goods values(5,'青菜',2); 65 insert into goods values(6,'菠菜',2); 66 67 --创建视图,将两张表的数据结合,如果重复就不显示。使用内连接,主键=外键 68 create view v_goods as 69 select goods.*,ptype.pname from goods inner join ptype on goods.pid=ptype.pid; 70 71 ----创建一个 ‘替换’ 触发器 72 create or replace trigger tri_updateGoods 73 instead of update on v_goods --对视图进行操作前替换数据 74 for each row 75 begin 76 --修改名字,保留旧的主键 77 update goods set gname=:new.gname where gid=:old.gid; 78 update ptype set pname=:new.pname where pid=:old.pid; 79 end; 80 81 ----可修改视图数据 82 update v_goods set gname='芹菜' , pname='有机蔬菜' where gid=5; 83 84 85 86 --2,序列:sequence ----------oracle 的计数器,安规则计数 87 create table product( 88 pid number primary key, 89 pname varchar2(30) 90 ); 91 92 -----建立序列------------------------------------------- 93 create sequence PRODUCT_SEQ --序列名 94 minvalue 1 --最小值 95 maxvalue 9999999999999999999999999999--最大值 96 start with 1 --开始的数据 97 increment by 1 --每次增加1 98 cache 20; --缓冲大小20M 99 100 101 102 --3,primary key=index +unique 103 ---索引 index 主要的作用是提高查询效率 104 /* 105 索引的优点: 提高查询效率 106 索引的缺点: 降低了数据更新的效率,增加了存储空间 107 常用查询的栏目才建立索引,并不是所有的位置建立索引都好,而且索引不要超过4个 108 使用规则: 数据量大,常用的查询栏目上建立索引 109 */ 110 create index indexname on tablename(cloumn); 111 create index index_score on student(score); --在学生的表的分数栏上建立一个叫做index_score的索引

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!