友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

SQL 21日自学通(V3.0)(PDF格式)-第61章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






项技术 



Sybase Transact…SQL's 的ROLLBACK 语句与 MIT 语句非常相似 



SYNTAX 



    rollback {transaction | tran | work}  'transaction_name | savepoint_name' 



一个 ORACLE 的命令序列如下 



INPUT 



SQL》 SET TRANSACTION; 



SQL》 INSERT INTO CUSTOMERS VALUES 



     (〃Bubba MacDowell〃; 〃2222 Blue Lake Way〃; 〃Austin〃; 〃TX〃; 39874; 8); 



SQL》 ROLLBACK; 



SQL》 SELECT * FROM CUSTOMERS; 



     Name                Address              City       State   Zip     Customer_ID 



Bill Turner      725 N。 Deal Parkway      Washington    DC     20085    1 



John Keith       1220 Via De Luna Dr。     Jacksonville  FL     33581    2 



Mary Rosenberg   482 Wannamaker Avenue    Williamsburg  VA     23478    3 



David Blanken    405 N。 Davis Highway     Greenville    SC     29652    4 



Rebecca Little   7753 Woods Lane          Houston       TX     38764    5 



Izetta Parsons   1285 Pineapple Highway   Greenville    AL     32854    6 



John MacDowell   2000 Lake Lunge Road     Chicago       IL     42854    7 



                                                                                230 


…………………………………………………………Page 231……………………………………………………………

SQL 21  日自学通(V1。0)                                                        翻译人    笨猪 



而 A Sybase SQL  的命令序列则如下 



INPUT 



     1》 begin transaction 



    2》 insert into CUSTOMERS values 



       (〃Bubba MacDowell〃; 〃2222 Blue Lake Way〃; 〃Austin〃; 〃TX〃; 39874; 8) 



    3》 rollback transaction 



    4》 go 



     1》 SELECT * FROM CUSTOMERS 



    2》 go 



     Name                 Address               City       State    Zip    Customer_ID 



Bill Turner       725 N。 Deal Parkway      Washington     DC      20085    1 



John Keith        1220 Via De Luna Dr。     Jacksonville   FL      33581    2 



Mary Rosenberg    482 Wannamaker Avenue    Williamsburg   VA      23478    3 



David Blanken     405 N。 Davis Highway      Greenville    SC      29652    4 



Rebecca Little    7753 Woods Lane          Houston        TX      38764    5 



Izetta Parsons    1285 Pineapple Highway    Greenville    AL      32854    6 



John MacDowell    2000 Lake Lunge Road      Chicago       IL      42854    7 



    你也看到了         由于使用了 ROLLBACK  命令撤消了 INSERT                命令    新的记录并没有被 



加入到表中 



    如果你写了一个图形用户界面的应用程序                        比如 MICRO  WINDOWS         你可以做一个 



数据库查询对话框以便让用户在其中输入数值  如果用户按下了                                  确定     按钮    那么数据 



库将会保存所做的改动              如果用户按下了           取消  按钮       那么所有的更改就会被取消                显 



然   这种情况给予了你使用事务处理的机会 



    注    下边的代码给出的 ORACLE  SQL 中的使用方法  注意这里有 SQL》并且有行号 



在随后给出的 Sybase SQL syntax 中则没有SQL》提示符 



当对话框载入后  这些 SQL 语句将会运行 



INPUT 



SQL》 SET TRANSACTION; 



SQL》 SELECT CUSTOMERS。NAME; BALANCES。CURR_BAL; BALANCES。ACCOUNT_ID 



    2    FROM  CUSTOMERS;  BALANCES 



    3    WHERE  CUSTOMERS。NAME  =  〃Rebecca  Little〃 



                                                                                  231 


…………………………………………………………Page 232……………………………………………………………

SQL 21  日自学通(V1。0)                                                    翻译人    笨猪 



    4    AND  CUSTOMERS。CUSTOMER_ID  =  BALANCES。ACCOUNT_ID; 



    该对话框允许用户更改当前的结算账号  所以你需要将该数据返回给数据库 



    当按下 OK 按钮以后  UPDATE 将会运行 



INPUT 



SQL》 UPDATE BALANCES SET CURR_BAL = 'new…value' WHERE ACCOUNT_ID = 6; 



SQL》 MIT 



    如果用户按下了 CANCEL           那么将会运行 ROLLBACK 命令 



INPUT 



SQL》 ROLLBACK 



    当该对话框在 Sybase SQL 中被载入以后  将会运行下边的语句 



INPUT 



1》 begin transaction 



2》 select CUSTOMERS。Name; BALANCES。Curr_Bal; BALANCES。Account_ID 



3》 from CUSTOMERS; BALANCES 



4》 where CUSTOMERS。Name = 〃Rebecca Little〃 



5》 and CUSTOMERS。Customer_ID = BALANCES。Account_ID 



6》 go 



    该对话框允许用户改变当前的结算账号  当你将该数据返回给数据库以后并按下 OK 



按钮时  UPDATE 语句将会运行 



INPUT 



1》 update BALANCES set Curr_BAL = 'new…value' WHERE Account_ID = 6 



2》 mit transaction 



3》 go 



如果用户选择了 CANCEL 按钮  那么将会执行 ROLLBACK 的语句 



INPUT 



1》 rollback transaction 



2》 go 



    ROLLBACK 语句将会终止整个事务               当存在嵌套事务时  ROLLBACK 将会终止掉全 



部事务     系统将会返回到事务开始的最初状态 



    如果当前没有活动的事务时  ROLLBACK 或 MIT  语句将不会对数据库产生任何 



                                                                              232 


…………………………………………………………Page 233……………………………………………………………

SQL 21  日自学通(V1。0)                                                翻译人    笨猪 



作用    你可以认为这是一个无效的命令 



    在 MIT    语句运行以后         在事务中的所有动作都会得到确认                   这时在使用 



ROLLBACK 命令就太晚了 



在事务中使用保存点 



    在事务中使用 ROLLBACK  可以取消整个的事务  但是你也可以在你的事务当中使用 



语句进行      部分地确认       在 Sybase 和 Oracle 中都允许你在当前事务中设一个保存点  从 



这一点开始       如果你使用了 ROLLBACK  命令          那么系统将会回到保存点时的状态                而在 



保存点之前的语句将会得到确认  在 ORACLE 中创建一个保存点的语法格式如下 



SYNTAX 



    SAVEPOINT savepoint_name; 



在 SYBASE 中创建保存点的语法格式如下 



SYNTAX 



    save transaction savepoint_name 



下边是使用 ORACLE 语法的例子 



INPUT 



    SQL》 SET TRANSACTION 



    SQL》 UPDATE BALANCES SET CURR_BAL = 25000 WHERE ACCOUNT_ID = 5 



    SQL》 SAVEPOINT save_it 



    SQL》 DELETE FROM BALANCES WHERE ACCOUNT_ID = 5 



    SQL》 ROLLBACK TO SAVEPOINT save_it 



    SQL》 MIT 



    SQL》 SELECT * FROM BALANCES 



结算平衡表的内容如下 



       Average_Bal                Curr_Bal                 Account_ID 



         1298。53                   854。22                       1 



         5427。22                   6015。96                     2 



         211。25                    190。01                      3 



          73。79                     25。87                      4 



         1285。90                  25000。00                      5 



                                                                         233 


…………………………………………………………Page 234……………………………………………………………

SQL 21  日自学通(V1。0)                                                            翻译人     笨猪 



           1234。56                       1543。67                           6 



           345。25                         348。03                           7 



           1250。76                       1431。26                           8 



     下边是使用 Sybase 语法的例子 



INPUT: 



1》 begin transaction 



2》 update BALANCES set Curr_Bal = 25000 where Account_ID = 5 



3》 save transaction save_it 



4》 delete from BALANCES where Account_ID = 5 



5》 rollback transaction save_it 



6》 mit transaction 



7》 go 



1》 select * from BALANCES 



2》 go 



        Average_Bal                      Curr_Bal                     Account_ID 



           1298。53                        854。22                           1 



          5427。22                        6015。96                           2 



           211。25                         190。01                           3 



            73。79                         25。87                            4 



           1285。90                       25000。00                          5 



           1234。56                       1543。67                           6 



           345。25                         348。03         
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!