|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
BDB源自BerkeleyDB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性办理
在做一个论坛时,必要掏出论坛中某个板块的相干信息,同时要获得该板块的版主信息(姓名及Id),但版主多是多个,方便于利用间接联系关系的手腕来完成,那样大概招致数据量年夜,并且会增添程序的庞大度。
后思索一种变通的手腕,能够使用一个function来获得一切版主信息,将他们拼合为一个字符串,在获得板块信息时,在select语句中到场一个function,从而失掉响应的了局。
以下是部分的例子:
----------使用function获得版主信息
FUNCTIONgetOwnerOfTheme(p_themeIdNUMBER)RETURNVARCHAR2
IS
tempStrVARCHAR2(300);
tempcurtcur;
vuseridVARCHAR2(20);
vusernameVARCHAR2(20);
BEGIN
OPENtempcurFORSELECTa.userid,a.username
FROMhome_usera,home_forumownerb
WHEREa.userid=b.useridANDb.themeid=p_themeId;
LOOP
FETCHtempcurINTOvuserid,vusername;
EXITWHENtempcur%NOTFOUNDORtempcur%NOTFOUNDISNULL;
tempStr:=tempStr||vuserid||:||vusername||,;
ENDLOOP;
CLOSEtempcur;
RETURNtempStr;
END;
---在挪用的存储过程当中,在select子句中挪用function的值
procedure()
is
begin
SELECTthemeId,getOwnerOfTheme(themeid)owner
FROMhome_forumthemeORDERBYthemeid;
end;
为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。 |
|