按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
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 代码 而与这项任务随之而来的是你可能会成为一个数据库的管
理和维护人员
在很多时候 当我们在真正实施这个项目时我们需要考虑或计划到一点 那就是当众
多的用户通过广域网使用你的应用程序时会有什么情况发生 根据今天个人计算机的强大
软件和硬件以及微软的开放数据库联接 ODBC 任何连接于网络的用户都会有办法得到
你的数据库 我们不想在当我们公司的计算机准备联入 internet 时或类似的大型网络时有
麻烦出现 那么我们应该如何面对这一情况
非常幸运 软件供应商已经为你处理安全问题提供了许多的工具 每一个新的网络操
作系统都会面对着比它的上一代更为严格的安全性要求 此外 许多的数据库供应商也都
238
…………………………………………………………Page 239……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
在它们的数据库系统提供了不同程度的 与你的网络操作系统安全相独立的安全性 所以
想在不同的产品中实现安全性的方法是非常广泛的
流行的数据库产品与安全
就像你所知道的那样 许多数据库管理系统为你的生意而存在着商业竞争 在一个项
目的开发过程中 你可能会只购买少数的许可证用以测试 开发以及其它的目的 但是
你的产品的实际许可证要