给出像
这样的交易SELECT * FROM t;
DROP TABLE t;
这有效吗?如果是,结果是什么 - 空集或t的先前内容?
我对SQLite案件特别感兴趣,但由于此问题之前显然没有被问过,所以看看各种数据库会很好 - 可能还有各种实现版本之间的差异(例如移动版)。
答案 0 :(得分:2)
答案是,“这取决于。”我所知道的最可读的来源是Melton and Simon's book on SQL:1999。
对于那些不明白问题所在的人,请考虑这个部分交易。
begin transaction;
select * from t;
drop table t;
如果没有在您最喜欢的dbms中进行测试,请考虑一下。
commit;
之前是否应该看到任何行? commit;
后客户端是否应该看到行? 然后考虑其他并发查询如何“应该”在各种事务隔离级别下运行。
答案 1 :(得分:0)
首先,您将获得表t中提出的所有记录,
之后它会放弃表格。
就这么简单,从上到下。