mariadb 有什么方法可以防止DELETE/UPDATE查询使用主键大于/小于比较?

ckx4rj1h  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(120)

在MySQL/MariaDB中,有一个SQL_SAFE_MDOE,它阻止您在where子句中不使用主键的情况下运行查询。
但是,即使启用了该标志,我也可以运行如下查询

DELETE FROM table WHERE id > 0;

这几乎会产生和

DELETE FROM table

那么,有没有什么办法可以更严格一些呢?先谢了

e0bqpujr

e0bqpujr1#

您可以实现一个以指定方式进行删除的存储过程,并让用户调用该过程。
然后撤销用户对该表的DELETE权限,这样用户就不能直接删除,他们必须调用该过程。
SQL_SAFE_MODE总是可以被绕过的,可以通过更改会话变量,也可以通过使用WHERE子句(如图所示),或者通过使用LIMIT子句。

相关问题