mysql / oracle 中是否有任何实用程序/功能可以防止我错误地发出一些删除/更新命令,必须在 command_line* (如果可能在 ubuntu 中)提示一条消息,询问是否“您确定运行此命令”,如果是,则删除/update 命令会执行吗?
我已经用谷歌搜索了这个,但没有为此提供具体的解决方案。我也尝试了 SOURCE,但这并不是我想要的。
有人对此有任何想法吗?
如果我要对 > 100 000 条记录执行更新命令,应该会出现一个提示,询问“你真的要运行吗?”,就像在 Unix 中,如果我们使用 rm 文件名,它会询问你是否确定要删除?
没有“错误”的删除或更新命令之类的东西,除非它是“错误的”,在语法上无效、引用不存在的对象或尝试用户无权执行的操作……而那些不是无论如何都不会执行。
所以你一定在谈论这样的事情:
系统肯定无法正确猜测“嘿,这似乎是错误的”并要求您重新考虑您的决定。DBMS 的工作是以最佳方式完成您所要求的事情,而不是事后猜测您是否知道自己在做什么。
MySQL 确实有一种试图保护您的模式,通过阻止您执行不使用索引来查找行的更新或删除,并使用基于每个连接
--i-am-a-dummy
启用的标志sql_safe_updates
- 或者您可以启用该设置服务器上的全局级别。我认为这解决了错误的问题,即您拥有授予他们没有资格拥有的人的特权。
当然,您可以禁用autocommit,要求您键入
COMMIT;
以实际将 DML 更改提交到数据库,但这只有在您专门使用像 InnoDB 之类的事务存储引擎而不是 MyISAM 时才真正有用,所以我不这样做不知道解决了多少。那些有额外懒惰的人会发现他们可以
; COMMIT;
在每个语句的末尾输入(在mysql
cli 中是这样,不是普遍的)。一个在提交之前足够认真思考的人可能足够认真,不会键入没有意义的查询。
您可以使用
以下是在 MySQL 中创建触发器的语法:
创建触发器{之前| 之后 } { 插入 | 更新 | DELETE } ON <table name>
FOR EACH ROW <triggered action>