|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。 SQLserver一时表是常常必要用到的,上面就教您怎样利用SQLserver一时表办理避免用户反复登录成绩,供您参考。
在我们开辟商务软件的时分,经常会碰到如许的一个成绩:如何避免用户反复登录我们的体系?出格是关于银行或是财政部门,更是要限定用户以其工号身份屡次登进。
大概会有人说在用户信息表中加一字段判别用户工号登录的形态,登录后写1,加入时写0,且登录时判别其标记位是不是为1,如是则不让该用户工号登录。可是如许那必将会带来新的成绩:如产生象断电之类不成预知的征象,体系长短一般加入,没法将标记地位为0,那末下次以该用户工号登录则不成登进,这该怎样办呢?
也许我们能够换一下思绪:有甚么器材是在connection断开后能够被体系主动接纳的呢?对了,SQLServer一时表具有这个特征!可是我们这里的这类情形不克不及用部分SQLserver一时表,由于部分一时表关于每个connection来讲都是一个自力的工具,因而只能用全局一时表来到达我们的目标。
好了,情形已开阔爽朗话了,我们能够写一个象上面如许复杂的存储历程:
- createproceduregp_findtemptable/*寻觅以操纵员工号定名的全局一时表*如无则将out参数置为0并创立该表,若有则将out参数置为1*在connection断开毗连后,全局一时表会被SQLServer主动接纳*如产生断电之类的不测,全局一时表固然还存在于tempdb中,可是已得到活性*用object_id函数往判别时会以为其不存在.*/@v_useridvarchar(6),--操纵员工号@i_outintout--输入参数0:没有登录1:已登录asdeclare@v_sqlvarchar(100)ifobject_id(tempdb.dbo.##+@v_userid)isnullbeginset@v_sql=createtable##+@v_userid+(useridvarchar(6))exec(@v_sql)set@i_out=0endelseset@i_out=1
复制代码 在这个过程当中,我们看到假如以用户工号定名的全局一时表不存在时历程会往创立一张并把out参数置为0,假如已存在则将out参数置为1。
如许,我们在我们的使用程序中挪用该历程时,假如获得的out参数为1时,我们能够绝不客套地跳出一个message告知用户说”对不起,此工号正被利用!”
<Pstyle="TEXT-INDENT:2em">
DBaaS解决方案既可以解决这些问题,又能为客户节约资金。相反作为解决方案提供商,采用DBaaS模式似乎就并不那么有吸引力了,因为与企业内部署软件的解决方案相比,DBaaS意味着更低的利润。 |
|