|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在Windows中MySQL以服务形式存在,在使用前应确保此服务已经启动,未启动可用netstartmysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqldstart"命令,注意启动者应具有管理员权限。
保留点(SAVEPOINT)是事件处置过程当中的一个标记,与回滚命令(ROLLBACK)分离利用,次要的用处是同意用户将某一段处置回滚而不用回滚全部事件,这在PL/SQL开辟中仍是很有效处的。
上面的例子中,把SAVEPOINT标志在INSERT语句之前,假如这条INSERT语句试图将反复的数据保留到EMP表中的话,将触发实行事后界说的DUP_VAL_ON_INDEX破例处置,在这内里的ROLLBACKTOdo_insert命令将回滚下面的那条INSERT操纵,而不会影响后面的任何操纵。
DECLARE
emp_idemp.empno%TYPE;
BEGIN
UPDATEempSET...WHEREempno=emp_id;
DELETEFROMempWHERE...
...
SAVEPOINTdo_insert;
INSERTINTOempVALUES(emp_id,...);
EXCEPTION
WHENDUP_VAL_ON_INDEXTHEN
ROLLBACKTOdo_insert;
END;
假如你界说了多个savepoint,当你指定回滚到某个savepoint时,那末回滚操纵将回滚这个savepoint前面的一切操纵(即便前面大概标志了N个savepoint)。比方,在一段处置中
你界说了五个savepoint,从第三个savepoint回滚,前面的第4、第五个标志的操纵都将被回滚,假如不利用ROLLBACKTOsavepoint_name而利用ROLLBACK,将会滚全部事件处置。
假如你在递回子程序内里界说了一个savepoint,假如每个递回层都设置了SAVEPOINT.此时,你只能回滚到比来的一个savepoint.
Savepoint的声明能够在统一个事件处置内里反复界说.它的感化就是把savepoint从上一个地位转移到今朝的地位.因此,实行回滚也只回滚到比来的savepoint.
上面是一个例子:
BEGIN
...
SAVEPOINTmy_point;
UPDATEempSET...WHEREempno=emp_id;
...
SAVEPOINTmy_point;--movemy_pointtocurrentpoint
INSERTINTOempVALUES(emp_id,...);
EXCEPTION
WHENOTHERSTHEN
ROLLBACKTOmy_point;
END;
别的,Oracle没有对每一个session内里可使用的savepoint个数做限定.
Cluster/NDB高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用 |
|