关于MySQL的更一般的问题。 我想知道在SQL级别可以/应该直接执行多少检查。 例如,我正在建立一个管理员可以发布贴纸的论坛。 目前,在发布消息时,PHP会检查用户的会话以查看该用户是否为管理员。 我的问题是:如果当前尝试发布消息的用户的user_id下的user_is_admin为真,那么是否有办法生成INSERT查询,只将新主题插入粘性(stick = true)? 是否有可能/希望这样做?
答案 0 :(得分:1)
回答问题的第1部分(是否可能?),是的,这是可能的。
MySQL有一个IF函数,可以在INSERT和UPDATE语句中使用,根据语句范围内的其他因素设置列的值。
语法为IF(expr,if_true_expr,if_false_expr),因此它有点像PHP,C,Java等中的三元运算符。请参阅http://www.mysqltutorial.org/mysql-if-function.aspx。
至于是否需要,这取决于整体上下文,但通常使用特定于供应商的SQL会使您的应用程序不那么便携。此外,逻辑在PHP和SQL之间分离,因此可能不太容易理解和重构,对DB结构的更改会破坏SQL代码,您不太可能意识到使用处理SQL层的MVC框架的好处你等等,所以不可取。