2014-11-10 6 views
0

Привет, ребята, у меня есть новая разработка mysql. У меня есть настройка таблицы. Мне просто нужно вернуть последнее обновленное значение в mysql.Получение последнего обновленного значения из таблицы mysql

Так я исследовал больше об этом, и я получил решение создать триггер для этой цели ..

Так что мой код выглядит

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); 

Спусковой выглядит

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

Вышеуказанный триггер не работал на самом деле.

что мне нужно, n i обновить столбец CUSTOMERS, я должен вернуть последнее значение обновления.

Надеется, что вы, ребята, можете помочь me..Thanx

+0

Существует более чем один способ, которым вы можете это сделать. Если вы хотите, чтобы триггер так обновлялся, вы вставляли эту последнюю строку в новую таблицу ... но это было бы слишком много, на мой взгляд. Я бы посоветовал вам добавить еще один столбец в таблицу с датой. Когда запись обновляется, вы обновляете время. Затем вы можете просто выбрать таблицу и отсортировать по времени обновления. –

+0

@JoeSwindell я не получил его на самом деле .. это было бы очень полезно, если бы вы отправили образец кода ..thanx – lovemysql

+0

Возможно, вы можете использовать ['LAST_INSERT_ID()'] (http://www.mysqltutorial.org/mysql-last_insert_id.aspx) или PHP ['mysqli_insert_id()') (http://php.net/ manual/en/mysqli.insert-id.php) –

ответ

3
  1. создать столбец с date_modified (датой)
  2. ввода дата, когда добавляются новый клиент или обновлен
  3. выбери * от заказа клиентов по Date_modified

код {

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 нет 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; 

}

+0

.. вы можете поместить некоторые код .. это было бы полезно .. – lovemysql

+0

как я упомянул мне нужно последнее обновленное значение – lovemysql

+0

Этот ответ в значительной степени был тем, что я говорил в комментарии. Это, вероятно, будет вашим лучшим решением. –

0

Я не уверен, что вы хотите АРХИВ, но сделать триггер работы:

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 

Попробуйте его с

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 

ИМЯ второй строки изменится на «somerange»

Этот триггер загорится после того, как вы ОБНОВЛЯЕТ строку, а не после того, как вы вставите строку. Для ВСТАВИТЬ изменения триггера соответственно (UPDATE -> INSERT)

Чтобы получить последнюю обновленную строку надстройку:

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

и получить последний обновленный ID:

SELECT ID FROM CUSTOMERS ORDER BY lastmodified DESC LIMIT 1; 

Также следует рассмотреть сделав поле ID своим первичным ключом.

+0

..i did not get it..where я хочу добавить эти таблицы alter ... это делается после триггера или я хочу сделать он отдельно – lovemysql

+0

первый кодовый блок является правильным синтаксисом для триггера из вопроса. если вам это не нужно и только хотите получить последний идентификатор, измените таблицу с помощью инструкции ALTER (вставьте phpmyadmin -> SQL, exectue через php/python и т. д. или выполните в mysql-клиенте после выбора правильной базы данных) и тогда вы всегда можете получить последний обновленный идентификатор с последним оператором SELECT. – cari

+0

Итак, здесь new.name означает, что значение somerange добавляется в новый столбец правильно? – lovemysql

Смежные вопросы