oracle项目开发,项目中的oracle开发技巧

参与进"数字公交"项目已经有一个多月了,我自己负责的模块也基本完成并通过测试, 本项目基于oracle的C/S结构,涉及很多数据库方面的操作,有一些经验是以前没有用到的, 为了留做它日参考,特记录于此,如果看到此文的读者能够用到,那我更是欣慰. 1.users是用户表,userid是从sequence得到的唯一序号,作为主键,下面的触发器 方便每次插入分配唯一的序列,其他表也可以参考于此.        CREATE OR REPLACE TRIGGER users_trig before insert on users for each row declare   seq_val number; begin    select s_userid.nextval     into seq_val from dual;    :new.userid := seq_val; end; 2.org是部门表,其中orgid是当前部门id,porgid是上级目录id,像这种有父子关系的表 中做从某一部门向上或向下的查询用到了oracle的connect by语句: select * from org connect by prior orgid=porgid start with orgid=1    //从部门id为1的部门寻找所有子部门 select * from org connect by prior porgid=orgid start with orgid=1    //从部门id为1的部门寻找所有父部门 3.用户,角色,权限关系处理 角色表里有角色的模块权限,用1和0表示,1表示有,0表示无,如果系统有10 个模块,则每一角色的权限用10位的01来表示,用户被赋予角色,一个用户可以有多个角色,相对与用户的权限就是所有它拥有角色的权限字段做与操作的结果.  strSql = "select substr(power," & modID & ", 1) as rightbit from role where roleid in(select roleid from role_user where userid in(select userid from users where loginname='" & strLoginName & "'))" //列出了当前用户所拥有角色对当前模块的权限 结果集中如果有1则用户有权限,如果全为0则没有权限. 4.temp表中做字段A和B的除操作,返回结果集 select (case when B<>0 then A/B else A end) from temp 5.建立触发器处理级联表的删除:role角色表删除一个角色,role_user中要删除相应的角色用户关系列: create or replace trigger trg_role_user_delete before delete on role for each row begin    delete from role_user            where roleid = :OLD.roleid; end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值