2016-07-26 6 views
-1

У меня есть две колонки в таблице sql (кредитов и значок). Я хочу, когда кредиты будут обновлены для изменения значка в соответствии с новым значением кредитов.auto update sql column при обновлении другого столбца

например, когда кредиты < 100 Я хочу, чтобы значок был «новичком», а если кредиты стали 200, я хочу, чтобы значок обновлялся до «расширенного» (просто пример).

Я попытался триггеры, но они не работали по какой-то причине (Ошибка MySQL # 1442)

Я использую PhpMyAdmin Trigger:

update users 
set badge = (CASE 
    WHEN credits < 50 
    THEN 1 
    WHEN credits >= 50 
    THEN 2 
    WHEN credits >= 100 
    THEN 3 
    WHEN credits >= 125 
    THEN 4 
    WHEN credits >= 150 
    THEN 5 
    WHEN credits >= 200 
    THEN 6 
END) 
+0

В соответствии с этим [вопрос] (http://stackoverflow.com/questions/12203859/mysql-trigger-cannot-update-table-getting-error-1442), вы, кажется, пытаетесь отредактировать ту же таблицу в триггере – FirstOne

+0

Можете ли вы показать нам триггер, который вы пытались создать, и дали вам ошибку? – BrandonM

+2

_Помощь нам, чтобы помочь вам показать нам, что вы пробовали, и кто-то предложит исправление кода или лучший способ сделать это. Но ** это не работает ** вообще не помогает. – RiggsFolly

ответ

0

Вы можете использовать виртуальные Столбцы в MySQL/MariaDB. они могут рассчитать. Если вы хотите выполнить поиск по новому полю, вы можете использовать постоянное поле.

CREATE TABLE `table1` (
    `a` int(11) NOT NULL, 
    `b` varchar(32) DEFAULT NULL, 
    `c` int(11) AS (a mod 10) VIRTUAL, 
    `d` varchar(5) AS (left(b,5)) PERSISTENT 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

см Руководство: https://mariadb.com/kb/en/mariadb/virtual-computed-columns/

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