CREATE TABLE test_table (
hash VARCHAR(30) NOT NULL PRIMARY KEY,
fullname VARCHAR(120) NOT NULL
);
CREATE TABLE hash_tracker(
hash VARCHAR(30) NOT NULL,
created_at DATETIME NOT NULL
);
DELIMITER $$
CREATE TRIGGER `test_trigger`
AFTER INSERT ON `test_table`
FOR EACH ROW
BEGIN
INSERT INTO hash_tracker VALUES (NEW.`hash`, NOW());
END$$
DELIMITER ;
然后在我的 test_table ,我可以运行以下查询
SELECT hash FROM hash_tracker ORDER BY created_at DESC LIMIT 1;
2条答案
按热度按时间i2loujxw1#
事实
没有等价于
LAST_INSERT_ID()
返回非整数值。你可以简单地
简单的方法
添加一个整数列,该列可以是自动递增的,也可以是非自动递增的。
要使它正确地自动递增,至少要在mysql本身中实现一个算法,或者用自己选择的语言用新的id填充现有的记录。
更复杂的方法
https://stackoverflow.com/a/53481729/2323764 (@kellymandem)
添加第二个表来管理id,并由没有id的原始表触发。
一个人不能
我发现这个很有前途的问答。
有没有办法在mysql中获取非自动递增列的最后一个插入id?
上面提到了
LAST_INSERT_ID()
在INSERT
声明已经存在。但是
非整数值将被忽略。
zvms9eto2#
我认为最好通过创建一个新表和一个触发器来跟踪主表中新插入的哈希值来解决您的问题。
例如
然后在我的
test_table
,我可以运行以下查询获取最近插入的哈希。