GBase 8s V8.8 SQL 指南:教程-7.2.4

7.2.4 删除选择了的行
您还可选取基于非索引列的行,如下例所示:
DELETE FROM customer WHERE company = 'Druid Cyclery';
由于被测试的列没有唯一约束,因此此语句可能删除多行。(Druid Cyclery 可能有两个商
店,两个商店的名称相同但客户编号不一样。)
要了解 DELETE 语句影响多少行,请从 customer 表中为 Druid Cyclery 选择符合条件的行
计数。
SELECT COUNT(*) FROM customer WHERE company = 'Druid Cyclery';
您还可选择这些行并显示它们,以确保它们是您想要删除的那些行。
然而,当数据库对于多个用户同时可用时,使用 SELECT 语句作为测试只是一种近似的方
法。在您执行 SELECT 语句与后续的 DELETE 语句之间的时间内,其他用户可能已修改
了该表并更改了结果。在此示例中,另一用户可能执行下列操作:
• 为名为 Druid Cyclery 的另一客户插入新行
• 在插入新行之前,删除一个或多个 Druid Cyclery 行
• 更新 Druid Cyclery 行以具有新的公司名称,或更新某个其他客户以具有名称
Druid Cyclery。
在这短短的时间间隔内,虽然其他用户不太可能执行这些操作,但确实存在这种可能性。
相同的问题也影响 UPDATE 语句。在 并发和锁定 之下讨论解决此问题的方法,且在 对多
用户环境编程 中讨论得更详细。
您可能遇到的另一个问题是,在该语句完成之前出现硬件或软件故障。在此情况下,数据
库可能还没删除行,可能已删除了一些行,或已经删除了所有指定的行。数据库的状态未
知,这是我们不想看到的。要防止此情况,请使用事务日志记录,如 中断了的修改 讨论的
那样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值