MariaDB:自动提交的临时数据库和解决方法

MariaDB: temporary database and workaround for autocommit

我有一个用PHP(版本7.3.12)编写的网页,用户可以在其中编写任何SQL语句然后执行它(我使用的是MariaDB版本10.4.10,包含在 XAMPP 中)。不幸的是,当用户编写 DDL 语句时,大多数语句都是自动提交的,因此没有 space 用于回滚事务。我不希望他们在数据库中创建 200 个表,这些表将在没有任何干预的情况下永久保留在数据库中。 有没有办法解决这个问题?

我还想知道除了临时表之外是否还存在类似 临时数据库的东西? 我在考虑这个,因为如果我可以创建某种临时数据库(那会仅对会话可见),用户几乎可以做任何事情,而不必担心任何剩菜会留在数据库中。

感谢任何建议

MariaDB 中的数据定义语言 (DDL) 语句不是其事务语义的一部分,因此无法使用 ROLLBACK.

回滚 DDL

在您的 php 应用程序中使用适当的代码,您可以为每个用户会话创建一个唯一命名的数据库,然后在会话结束时将其删除。这就是各种数据库 fiddle 站点的工作方式。