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
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.