CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1,'aff',2,3,5),
VALUES (2,'blah',3,31,51);
假设我已经像
那样更新了我的表格UPDATE CUSTOMERS
SET NAME = 'anewname'
WHERE AGE = 3;
所以我需要的是我只需要一个查询来查找最后更新的值,即3
我尝试使用触发器并尝试使用LAST_INSERTED_ID()
。我也使用了TIMESTAMP
但我可以获得值3.
PS ..我不想在这里使用select语句来查找值3。
由于
答案 0 :(得分:3)
最简单的方法是添加类型为updatetime
的字段TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
。
这样,该字段将自动为您更新,您可以提取具有最近更新时间戳的行:
SELECT * FROM CUSTOMERS ORDER BY updatetime DESC LIMIT 1;
请注意,如果您一起更新许多行,那么这将为您提供任意行,但这听起来好像是您想要的,因为您正在寻找单行。
现在你的桌子变成了:
CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID),
updatetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
无论何时插入或更新,该行的updatetime
条目都将自动更新。
您的INSERT
保持完全相同:
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1,'aff',2,3,5),
VALUES (2,'blah',3,31,51);
请注意,我没有在此指定updatetime
的任何值:它会自动填充数据库。与UPDATE
相同。