0

事情是这样的,我一直在 MySQL Workbench 中删除行(这是第三次),因为我通常为每个需要查看数据的表打开一个选项卡,然后我回收同一个选项卡(以免堵塞它),所以假设我打开用户选项卡,查看用户 ID 为 24 的数据,但随后我需要查看来自 ID 为 26 的用户的数据,所以我只需将 WHERE 部分替换为 id = 26 或其他任何内容,但有时我也会执行 DELETE 语句,但不要关闭选项卡,所以假设一周后我想查看 id 为 28 的用户,我转到用户选项卡并替换 WHERE 部分,认为这是一个 SELECT 语句,但我惊恐地发现它是删除语句。

那么,我能做些什么来安全地删除数据,例如打开一个弹出窗口说你真的要删除它吗?所以我知道这是一个删除语句。当然,我可以查看语句是 SELECT 还是 DELETE,并且我已经尝试过了,但是我做了很多 SELECT 语句和查询,我想看看是否有更安全的方法。Workbench 固有的安全模式适用于一般删除语句,但不适用于特定语句(WHERE X)。也许在 MySQL 的 Workbench 中没有这样的选项,但在另一种替代软件中?是的,我又傻又粗心,想引起注意,但我每天都会做很多查询,不想再犯错

4

1 回答 1

2

处理这个问题的一个好方法是使用事务;

例如

delete from users where id = 2

作为安全防护,您可以将此语句包装在回滚的事务中。

start transaction;
delete from users where id = 2
rollback;

现在删除用户的唯一方法是仅选择第二行或更改rollbackcommit并运行整个查询。

另一方面,您可以编写上述查询以查看交易中的更改,例如

start transaction;
select * from users where id = 2; # user exists
delete from users where id = 2;
select * from users where id = 2; # user gets deleted
rollback;
于 2015-04-20T18:01:05.873 回答