游标(trigger)是每个学数据库的童鞋必定会接触到的名词,那么游标的作用是什么呢?我记得我上学那会学到游标,书上只给了一个例子:从某个表中逐个读取数据,当时我在想,逐个读取和一次读取有什么区别?这个问题随着其它学习任务被搁置了。
直到前段时间,由于有某种特殊需求,即:根据数据库中每条数据的若干字段组合,计算出该条数据的特征值(和Hash值类似),并更新到该行的特征字段(Character),刚开始想用每条数据的Id(自增的)取出这条数据之后,再计算特征值更新到相应字段中,但是总感觉这样不太妥当,一是想挑战一下自己的知识面,二是想对以往掌握的理论知识加以实践,于是,我采用了游标:
当时的做法是:
一,定义一个游标
二,逐条读取游标中的数据,并且将读到的当前行的数据提取出来保存,对某些字段进行运算,得出特征值,然后将特征值更新到改行的指定字段中
这样做等于是将计算和更新放到数据库端来做,在某方面加剧了数据库的压力,但是速度绝对是有提升的,并且这种计算不会经常进行,因此综合实际情况分析之后,才使用游标。针对本例,如果计算特征值时,必须要在客户端做一些处理,那么恐怕用游标就不那么灵活了,这里也建议各位自行判断优劣,做出取舍,毕竟,如果两种情况(在数据库计算和在程序中计算)都可以,使用游标也是对自己的一种锻炼。
结语:只有多动手,多思考,才能将更多的理论转化为实践。