“數(shù)字公交”項(xiàng)目中的Oracle開(kāi)發(fā)技巧
2024-08-29 13:51:31
供稿:網(wǎng)友
參與進(jìn)"數(shù)字公交"項(xiàng)目已經(jīng)有一個(gè)多月了,我自己負(fù)責(zé)的模塊也基本完成并通過(guò)測(cè)試,本項(xiàng)目基于Oracle的C/S結(jié)構(gòu),涉及很多數(shù)據(jù)庫(kù)方面的操作,有一些經(jīng)驗(yàn)是以前沒(méi)有用到的,為了留做它日參考,特記錄于此,假如看到此文的讀者能夠用到,那我更是欣慰。 1.users是用戶表,userid是從sequence得到的唯一序號(hào),作為主鍵,下面的觸發(fā)器方便每次插入分配唯一的序列,其他表也可以參考于此。 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是部門(mén)表,其中orgid是當(dāng)前部門(mén)id,porgid是上級(jí)目錄id,像這種有父子關(guān)系的表中做從某一部門(mén)向上或向下的查詢用到了oracle的connect by語(yǔ)句: select * from org connect by PRior orgid=porgid start with orgid=1 //從部門(mén)id為1的部門(mén)尋找所有子部門(mén)select * from org connect by prior porgid=orgid start with orgid=1 //從部門(mén)id為1的部門(mén)尋找所有父部門(mén) 3.用戶,角色,權(quán)限關(guān)系處理角色表里有角色的模塊權(quán)限,用1和0表示,1表示有,0表示無(wú),假如系統(tǒng)有10 個(gè)模塊,則每一角色的權(quán)限用10位的01來(lái)表示,用戶被賦予角色,一個(gè)用戶可以有多個(gè)角色,相對(duì)與用戶的權(quán)限就是所有它擁有角色的權(quán)限字段做與操作的結(jié)果。 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 & "'))" //列出了當(dāng)前用戶所擁有角色對(duì)當(dāng)前模塊的權(quán)限結(jié)果集中假如有1則用戶有權(quán)限,假如全為0則沒(méi)有權(quán)限。