提问人:Nandam 提问时间:2/12/2022 更新时间:2/12/2022 访问量:163
MariaDB:临时数据库和自动提交的解决方法
MariaDB: temporary database and workaround for autocommit
问:
我有一个用PHP编写的网页(版本7.3.12),用户可以在其中编写任何SQL语句,然后执行它(我使用的是MariaDB版本10.4.10,包含在XAMPP中)。不幸的是,当用户编写 DDL 语句时,大多数语句都是自动提交的,因此没有回滚事务的空间。例如,我不希望他们在数据库中创建 200 个表,而这些表不会在数据库中永久保留任何干预。有没有办法解决此问题?
另外,我想知道除了临时表之外是否还存在类似临时数据库的东西?我正在考虑这个问题,因为如果我可以创建某种临时数据库(仅对会话可见),用户几乎可以做任何事情,而我不必担心任何剩余物会留在数据库中。
感谢您的任何建议
答:
1赞
O. Jones
2/12/2022
#1
MariaDB 中的数据定义语言 (DDL) 语句不是其事务语义的一部分,因此无法使用 .ROLLBACK
使用 php 应用程序中的适当代码,您可以为每个用户会话创建一个唯一命名的数据库,然后在会话结束时将其删除。这就是各种数据库小提琴站点的工作方式。
评论
0赞
Nandam
2/12/2022
感谢您的回答,我一定会使用这个简单明了的解决方案!接受作为答案,虽然不能给你投票(没有足够的声誉):/
评论