友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第45部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
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 7
1250。76 1431。26 8
在上边的例子中创建了一个叫 SAVE_IT 的保存点 UPDATE 语句更新了结算平衡表中
的 CURR_BAL 列 你在其后设置了一个保存点 在保存之后 你又运行了 DELETE 命令
系统退回到了保存点处 之后你对事务用 MIT 命令进行了确认 结果所有在保存点
之前的命令得到了确认
如果你在其后又使用了 ROLLBACK 命令 那么将会取消当前的事务而不会有任何的
改变
在 ORACLE 中的例子如下
INPUT
SQL》 SET TRANSACTION
234
…………………………………………………………Page 235……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
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》 ROLLBACK
SQL》 SELECT * FROM BALANCES
BALANCE 表的内容如下
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 1473。75 5
1234。56 1543。67 6
345。25 348。03 7
1250。76 1431。26 8
Sybase SQL 语法的例子如下
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》rollback 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
235
…………………………………………………………Page 236……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
1285。90 1473。75 5
1234。56 1543。67 6
345。25 348。03 7
1250。76 1431。26 8
总结
事务可以被定义为一个有组织的工作单元 事务通常会执行一系列的以前学过的操作
如果由于一些原因使得操作没有如所期望地执行 那么可以在事务中取消这些操作 反之
如果操作全部正确执行了 那么事务中的工作可以确认
可以使用 ROLLBACK 命令来取消事务 确认事务的命令为 MIT SQL 用非常相
似的语法来支持这两类过程
SYNTAX
BEGIN TRANSACTION
statement 1
statement 2
statement 3
ROLLBACK TRANSACTION
或
SYNTAX
BEGIN TRANSACTION
statement 1
statement 2
statement 3
MIT TRANSACTION
问与答
问 如果我有一组事务 其中一个是不成功的 我是否可以确认其它的事务过程
答 不可以 必须整组的事务都是成功的才可以
问 在使用的 MIT 命令以后 我发现我犯了一个错误 那么我怎样才能更正这个错
236
…………………………………………………………Page 237……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
误
答 使用 DELETE INSERT 或 UPDATE 语句 ROLLBACK 在这时是不行的
问 在怎个事务结束以后我都必须使用 MIT 命令确认吗
答 不必 但是在确认没有错误而且在之前没有事务在运行时使用 MIT 会更安全
校练场
1 在嵌套的事务中 是否可以使用 ROLLBACK 命令来取消当前事务并回退到上级事务
中 为什么
2 使用保存点是否可以保存事务的一部分 为什么
3 MIT 命令是否可以单独使用 它一定要嵌套吗
4 如果你在 MIT 命令后发现的错误 你是否还可以使用 ROLLBACK 命令
4 在事务中使用保存点是否可以自动地将之前的改动自动地保存
练习
1 使用 PERSONAL ORACLE7 的语法来更正下边的语法
SQL》 START TRANSACTION INSERT INTO CUSTOMERS VALUES ('SMITH'; 'JOHN')
SQL》 MIT
2 使用 PERSONAL ORACLE7 的语法来更正下边的语法
SQL》 SET TRANSACTION
UPDATE BALANCES SET CURR_BAL = 25000
SQL》 MIT
3 使用 PERSONAL ORACLE7 的语法来更正下边的语法
SQL》 SET TRANSACTION
INSERT INTO BALANCES VALUES ('567。34'; '230。00'; '8')
SQL》 ROLLBACK
237
…………………………………………………………Page 238……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
第 12 天 数据库安全
今天我们来讨论一下数据库的安全问题 我们已经很清楚地看到不同的 SQL 语句可以
使我们具有管理关系型数据库系统的能力 与我们到今天为止所学习的其它主题一样 一
个数据库管理系统是如何在不同的产品中实现安全的呢 对于这个问题我们今天将以流行
的 ORACLE 7 数据库系统为例 到今天的结束时我们将具有以下能力
l 创建用户
l 更改密码
l 创建角色
l 为安全的目的而使用视图
l 在视图中使用同义词
前提 数据库管理员
安全问题在数据库的设计过程中常常会被忽略 许多计算机工作人员在进入计算机领
域时有计算机的编程知识或硬件知识 并且他们也会将精力注重于这一方面 例如 如果
你的老板要求你开展一个新的项目 而这个项目很明显地需要一个关系型的数据库时 那
你第一步想要做的工作是什么 在确定的相应的硬件和软件平台以后 你也许会开始设计
项目中的基本的数据库结构了 这一阶段会分给许多人去做 其中一些人是图形用户界面
设计者 另一些底层组件的设计者 也许你在读过本书以后会要求编写用于提供给客户应
用程序所使用查询的 SQL 代码 而与这项任务随之而来的是你可能会成为一个数据库的管
理和维护人员
在很多时候 当我们在真正实施这个项目时我们需要考虑或计划到一点
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!