我正在通过Spring Boot的JPA依赖关系处理我的MariaDB。
我有一张表,看起来像下面描述的
字段 | 类型 | 空 | >键 | 认>额外 | ||
---|---|---|---|---|---|---|
id | varchar | |||||
name | varchar(256( | 日期 | datetime(3( | 主用 | >NULL | |
ip | varchar |
在MySQL和MariaDB中,您可以在更新语句中使用ORDER BY和LIMIT:
UPDATE my_table
SET `date` = NOW()
WHERE
id = 'finding_id' AND
ip = 'finding_ip'
ORDER BY `date` DESC
LIMIT 1;
由于WHERE子句的原因,上面将使用当前日期时间更新过滤器中具有最高日期的记录。
注意:最好不要将任何保留字用作列名。你可以,但你必须在字段名周围使用反勾号。
这里的问题是数据库模式。
您有一个主键,它是一个由3列组成的UNIQUE复合键,并且您希望其中能够包含非唯一集。
除非您想每次都将日期更新为新的日期(增加/减少毫秒(,否则这是不可能的。
由于您似乎不关心这3列的唯一性,我建议您将索引类型从PRIMARY更改为index(仍然是复合的(,这样您就没有UNIQUE约束。
之后添加一个新的";真实的";id列primary_id
(或者重命名另一个,这样新的可以是id
(列,它只是启用了"自动增量"的普通PRIMARY KEY。