从mysql表获取最后更新的值

Hey guys i have new to mysql development actually ....i have a table setup ..I just need to return the last updated value in mysql.

So i have researched more about it and i got a solution to create a trigger for the purpose..

So my code looks like

 CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL AUTO_INCREMENT ,
   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),
 (2,'lolyeah',9,13,15);

The trigger looks like

CREATE TRIGGER getrandom 
AFTER UPDATE ON CUSTOMERS
FOR EACH ROW
BEGIN
UPDATE CUSTOMERS 
SET NAME = 'somerange'
WHERE ADDRESS = 3;
select NAME
END;

The above trigger didnt works actually..

what i need is that when i update the column CUSTOMERS i need to return the latest update value.

Hope you guys can help me..Thanx

  1. create a column with date_modified (date)
  2. input a date when a new customer is added or updated
  3. select * from customers order by Date_modified

code {

sql:

 CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL AUTO_INCREMENT ,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),
   Date_Modified date,
   PRIMARY KEY (ID)
);

INSERT INTO  CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY,Date_Modified)  
VALUES (1,'aff',2,3,5,'2012-11-10'),
 (2,'lolyeah',9,13,15,'2014-11-10');

SELECT * FROM CUSTOMERS ORDER BY Date_Modified ASC LIMIT 1;

sql no id:

 CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL AUTO_INCREMENT ,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),
   Date_Modified date,
   PRIMARY KEY (ID)
);

INSERT INTO  CUSTOMERS (,NAME,AGE,ADDRESS,SALARY,Date_Modified)  
VALUES ('aff',2,3,5,'2012-11-10'),
 ('lolyeah',9,13,15,'2014-11-10');

SELECT * FROM CUSTOMERS ORDER BY Date_Modified ASC LIMIT 1;

}

I'm not sure what you want to archieve, but to make the trigger work:

CREATE TABLE CUSTOMERS(
ID   INT              NOT NULL AUTO_INCREMENT ,
NAME VARCHAR (20)     NOT NULL,
AGE  INT              NOT NULL,
ADDRESS  CHAR (25) ,
SALARY   DECIMAL (18, 2),
PRIMARY KEY (ID)
);

CREATE TRIGGER `updcustomer` BEFORE UPDATE ON `CUSTOMERS`
FOR EACH ROW IF NEW.ADDRESS = 3 THEN
SET NEW.NAME = 'somerange';
END IF

Try it with

INSERT INTO  CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)  
VALUES (1,'aff',2,3,5),
(2,'lolyeah',9,13,15);

UPDATE CUSTOMERS SET ADDRESS=3 WHERE ID=2

NAME of the second row will change to "somerange"

This trigger will fire after you UPDATE a row, not after you INSERT a row. For INSERT change the Trigger accordingly (UPDATE -> INSERT)

To get the last updated row add:

ALTER TABLE CUSTOMERS
ADD lastmodified TIMESTAMP 
DEFAULT CURRENT_TIMESTAMP 
ON UPDATE CURRENT_TIMESTAMP;

and to get the last updated ID:

SELECT ID FROM CUSTOMERS ORDER BY lastmodified DESC LIMIT 1;

Also you should consider making the ID-field your primary key.