通过根据记录更新/插入记录返回true / false的SQL查询存在且具有一个条件

时间:2016-03-14 03:31:03

标签: mysql sql

我有一个表,可以保存与记录的primary_keys相关的时间戳值。

表:primary_key_timestamp

列:primary_key VARCHAR(40),time_stamp(TIMESTAMP)。

我需要一个查询来更新主键的时间戳值,并在以下情况下返回true

  1. 提供的密钥不存在:插入并返回true。
  2. 条目存在且表中的时间戳值小于提供的值:更新它并返回True。
  3. 在下列情况下应返回false

    1. 密钥已存在时间戳,并且它具有更高的时间戳值:不要做任何事情只返回false。

1 个答案:

答案 0 :(得分:0)

除非您正在调用存储过程,否则无法在单个语句中插入和返回结果。如果您能够在插入后获得ROW_COUNT()(许多驱动程序/客户端将隐式执行),您可以查看此查询是否进行任何更新。只需检查非零行数。

INSERT INTO primary_key_timestamp (primary_key, time_stamp)
VALUES ([your_key], CURRENT_TIMESTAMP())
ON DUPLICATE KEY UPDATE time_stamp = GREATEST(time_stamp, VALUES(time_stamp));

如果您想将time_stamp设置为自定义值,只需将CURRENT_TIMESTAMP()替换为您的值。