SQL-在外部条件下更新

SQL-Update under a external condition

是否可以限制 SQL CRUD 语句的执行,其条件与正在处理的 table 完全无关?

例如仅在有特殊日期时才执行更新。

UPDATE tabfoo SET name="santa" where id="123"   // only if day = 31.12.

我喜欢把它放在一个语句中。我知道如何在脚本中执行此操作。 我的平台是 MySql 或 SqLite。

你可以试试

UPDATE tabfoo SET name="santa" where id="123" and day = 31.12.

否则您可以尝试 sql 存储过程。 if-else doku

在MySQL中问题可以通过以下方式解决:

UPDATE tabfoo 
SET name="santa" WHERE
    id="123" AND  MONTH(CURDATE()) = 12 AND DAY(CURDATE()) = 31;  // only if day = 31.12.

UPDATE tabfoo 
    SET name="santa" WHERE
        id="123" AND DATE_FORMAT(CURDATE(), '%d.%m') = '31.12';

对于 SQLite,您可以找到替代函数

对于 SQLite,您可以使用函数 strftime()

WHERE id = '123'
  AND strftime('%d.%m', CURRENT_DATE) = '31.12'

并且对于 MySql 函数 DATE_FORMAT():

WHERE id = '123'
  AND DATE_FORMAT(CURRENT_DATE, '%d.%m') = '31.12'