SELECT后DROP是否仍然产生数据?

时间:2014-03-07 19:30:38

标签: sql database

给出像

这样的交易
SELECT * FROM t;
DROP TABLE t;

这有效吗?如果是,结果是什么 - 空集或t的先前内容?

我对SQLite案件特别感兴趣,但由于此问题之前显然没有被问过,所以看看各种数据库会很好 - 可能还有各种实现版本之间的差异(例如移动版)。

2 个答案:

答案 0 :(得分:2)

答案是,“这取决于。”我所知道的最可读的来源是Melton and Simon's book on SQL:1999

Excerpt from Melton and Simon's book

对于那些不明白问题所在的人,请考虑这个部分交易。

begin transaction; 
select * from t; 
drop table t;

如果没有在您最喜欢的dbms中进行测试,请考虑一下。

  • 客户端在执行commit;之前是否应该看到任何行?
  • 执行commit;后客户端是否应该看到行?

然后考虑其他并发查询如何“应该”在各种事务隔离级别下运行。

答案 1 :(得分:0)

首先,您将获得表t中提出的所有记录,

之后它会放弃表格。

就这么简单,从上到下。