模拟MySQL查询

26

有没有一种方法可以在不修改数据库的情况下测试mysql查询?

例如,我可以运行delete from my_table where id=101而不会实际删除任何内容吗?那插入和更新呢?

谢谢。


为什么需要测试它们? - Pekka
4
在实际执行更新之前,手动检查更新是否按照您所期望的方式运行。 - Will
3个回答

33
你可以在运行查询之前启动一个事务,然后在运行完它们后回滚。请注意,要执行此操作,您需要使用InnoDB或XtraDb表(不适用于MyISAM)。
要启动一个事务,请向MySQL发送以下语句:
START TRANSACTION;

在查询的结尾运行以下语句:

ROLLBACK;

就其他连接而言,您的数据库将永远不会被修改。您当前的连接将在ROLLBACK之前看到更改,之后将恢复原始状态。


10
好的,现在如果我决定喜欢这些结果,我该如何保存它们?使用 END TRANSACTION; 吗?天啊,现在我必须去Google... 漫步回来 答案是 COMMIT - Zenexer
@Zenexer,如果没有“START TRANSACTION;”和“ROLLBACK;”,再执行相同的查询语句怎么样? - Black
1
@Black 你可以这样做,但COMMIT更容易。此外,如果您再次运行查询,不能保证获得完全相同的结果,而使用COMMIT,所见即所得。 - Zenexer

8

如果你只是想查看将删除多少行数据,为什么不将"delete"替换为"select count(*)"呢?


2

将您的数据库复制到测试数据库或自动生成导入脚本。然后,您可以在测试数据库上测试任何想要的内容,并使用脚本或导入功能再次恢复它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接