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'
是否可以限制 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'