Как обновить столбец после обновления другого столбца той же таблицы? - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь обновить столбец с помощью ранее обновленного столбца в phpMyAdmin.Я пытаюсь рассчитать коэффициент путем деления аванса на деп (коэффициент = аванс / деп).У меня есть эта таблица:

#id#   #dep#  #cash#  #advance#  #ratio#
----------------------------------------
1       100     100      200        0
----------------------------------------
2       200     300      500        0 
----------------------------------------    

Я пытаюсь этот код:

Update 'table1' Set 'ratio'= 'advance'/'dep';

Я ожидаю, что выход будет 200/100 = 2 обновляется в соотношении, когда я обновляю значение столбцов dep илиаванс в таблице.

1 Ответ

0 голосов
/ 08 апреля 2019

Вы можете использовать CREATE TRIGGER в таблице, чтобы вычислить и установить новое соотношение затронутых строк:

CREATE TRIGGER upd_ratio BEFORE UPDATE ON table_name
FOR EACH ROW 
BEGIN
    SET NEW.ratio = NEW.advance / NEW.dep;
END

В UPDATE и пересчитать все записи, которые вы можетеиспользуйте следующий оператор UPDATE.Вы должны выполнить это один раз после создания триггера для инициализации столбца ratio.

UPDATE `table_name` SET `ratio` = `advance` / `dep`

демонстрация на dbfiddle.uk

Youтакже можно использовать CREATE VIEW для создания представления таблицы (без столбца ratio).Вы можете динамически вычислять столбец ratio и вам не нужно сохранять и пересчитывать значение после UPDATE:

CREATE VIEW view_name AS SELECT *, advance / dep AS ratio FROM table_name;

demo на dbfiddle.uk

Примечание: Поскольку @ P.Salmon также упоминается в комментариях , вам необходимо использовать обратные кавычки вместо одинарных кавычек.Ваше текущее заявление UPDATE недействительно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...