栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在以下语句完成之前,不提交CTE删除

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在以下语句完成之前,不提交CTE删除

这是预期的并有文件记录。

引用手册

WITH中的子语句彼此并与主查询并发执行。因此,在WITH中使用数据修改语句时,指定更新实际发生的顺序是不可预测的。所有语句都使用相同的快照执行(请参见第13章),
因此它们不能“彼此”影响目标表 。这减轻了行更新实际顺序的不可预测性的影响,并且意味着RETURNING数据
是在不同的WITH子语句与主查询之间传递更改的唯一途径

(强调我的)


可以 使用链接的CTE删除公司:

with deleted_emp as (  delete from employee   where id = 1   returning company_id, id as employee_id)delete from companywhere id in (select company_id from deleted_emp)   and not exists (select *        from employee e          join deleted_emp af  on af.company_id = e.company_id and e.id <> af.employee_id)

重要的是从

notexists
子查询中排除刚删除的员工,因为这在第二个delete语句中始终可见,因此不存在永远不会为真。因此,子查询从本质上检查是否存在除分配给同一公司的已删除员工以外的其他员工。

在线示例:https://rextester.com/IVZ78695



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/670112.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号