我有一个包含2列(两个整数)的表,主键由这两列组成。我的应用程序不在此表上执行UPDATE语句,而我正在使用PostgreSQL。
但我的应用程序通过提前使用特定的表信息为所有表创建INSERT,DELETE和UPDATE准备好的语句。对于此特定表,UPDATE语句的WHERE子句包含这两列,但SET子句为空,这会导致错误。
是否有一种特殊形式的UPDATE语句除了检查为有效的SQL之外什么都不做?
提前致谢...
答案 0 :(得分:3)
您可以使用EXPLAIN UPDATE
返回有效语句的查询计划,但如果该语句无效则返回错误。
答案 1 :(得分:3)
像这样的陈述是错误的选择。不要这样做。
update foo set bar = bar;
虽然基础数据似乎没有改变,但PostgreSQL实际上执行了更新及其所有副作用。副作用可能包括这些。
使用WHERE FALSE
检查错误。
update foo set bar = bar where false;
简单测试将显示没有更新,没有触发器等等。
这两个查询的执行计划完全不同。用explain analyze
检查。