SQL中是否有UPDATE IF
类似语句,允许我针对需要更新的行验证客户端提供的属性的子集?
e.g。 UPDATE posts SET body = $body WHERE post_id = $post_id IF author_id = $author_id
FIND
,检查,并且UPDATE
包含在交易中并不像我想的那样优雅。也没有通过WHERE
子句验证客户端提供的字段。
向WHERE
子句添加属性将增加需要创建的索引数,而不会在验证之外获得任何好处。
答案 0 :(得分:2)
你在找这个吗?
UPDATE posts
SET body = $body
WHERE post_id = $post_id AND
author_id = $author_id;
答案 1 :(得分:1)
为什么不直接在WHERE子句中使用IF条件?
UPDATE posts
SET body = $body
WHERE post_id = $post_id
AND author_id = $author_id;
答案 2 :(得分:0)
Postgres 中的IF
中没有UPDATE
条款。
以下是包含UPDATE语法的 Postgres 文档。
虽然我知道你提到你没有发现它很优雅,但你需要在WHERE
子句中包含要验证的项目。
另一个选项,虽然你仍然需要将它包含在WHERE
子句中,但是将验证逻辑封装在 pl / pgSQL 函数中。如果您拥有在一堆查询中所需的完全相同的验证逻辑,那么这可能是一种更简洁的方法来集中逻辑并减少查询中的重复。