首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

oracle pl/sql学习札记(三) 主键、约束、游标、触发器、序列等

2013-08-27 
oracle pl/sql学习笔记(三) 主键、约束、游标、触发器、序列等--主键 primary key1、实体完整性,防止出现重复数

oracle pl/sql学习笔记(三) 主键、约束、游标、触发器、序列等
--主键 primary key
1、实体完整性,防止出现重复数据
2、检索有利
3、支持外键
一个数据表,往往有一个与业务无关的逐渐,保证数据的唯一性

建表时添加约束 create table XX(列名 类型 primary key, ......)
建表后添加约束 add primary key(employee_id);  

select table_name, constraint_name, constraint_type, status
from user_constraints where table_name = '表名'  

--禁用/启动主键约束
alter table 表名 disable/enable primary key

外键约束 唯一性约束 检查约束 默认值约束 非空约束 略

索引——提高数据性能的机制,不会为主键的改名而自动改名,但会随着主键的删除而被删除


--游标
delcare cursor 游标名称 is 查询语句 --声明游标

变量名 类型 或者 变量名 表名.列名%type --声明列表变量
变量名 表名%rowtype  --声明行变量

显式游标 open 游标名称 --打开游标

fetch 游标名称 into 变量 --通过游标抓取数据

--列变量例子
set serverout on;
declare cursor ex is select id, name, age from emp; 声明游标ex
声明三个列变量
id number;
name varchar2(20);
age number;

begin
    open cu_employee;
    fetch cu_employee into id, name, age;
循环输出
    while cu_employee%found loop
        dbms_output.put_line(id || ':' || name || ':' || age);
        fetch ex into id, name, age;
    end loop;
end;

--行变量获取游标信息
declare cursor ex is select * from emp;
employee employees%rowtype;
begin
    open cu_employee;
    fetch cu_employee into employee;
    while cu_employee%found loop
        dbms_output.put_line(employee.employee_id || ':' || employee.employee_name
                     || ':' || employee.employee_age);
        fetch ex into employee;
    end loop;
    close ex;
end;

--语句触发器
create trigger 触发器名称
before/after  触发动作(不能为视图创建before和after的触发器,也无法对select操作创建触发器,多个操作用or连接)
on 作用对象(数据表、视图等)
触发器操作(begin ..... end)

谓词 updating inserting deleting

--行触发器
create trigger 触发器名称
before or after or delete 触发动作
on 作用对象(数据表、视图等)
for each row
触发器操作(begin ..... end)

行触发器的变量引用 : old  :new
:old存储被delete和upate操作所影响的值,:new变量用于存储insert和update操作所影响的值

instance of 触发器 替代触发动作,可以应用于视图

alter trigger 触发器名称 disable/enable

oracel允许的触发器级联数是35个

--序列
create sequence 序列名 start with 初始值 increment by 步长

alter sequence 序列名 minvalue 最小值/maxvalue 最大值

cycle 设为可循环

cache 缓存大小  存储于内存中提高效率

序列名.nextval
序列名.currval

热点排行