如果列(NEW。{{col_name}})的名称存储在变量MySQL中,如何获取

时间:2018-02-15 09:53:40

标签: mysql sql database

我有一个变量:

DECLARE col_name CHAR(255);

如果名称存储在变量中,我如何从NEW/OLD获取列值。

NEW.{{col_name}}
OLD.{{col_name}}

我需要在触发器中使用它。

MySql 5.5.40

1 个答案:

答案 0 :(得分:0)

如果已知可能值的范围(我相信) 一个人可以使用'案例'

SELECT
    CASE
    when @col_name = 'columnA' then NEW.columnA
    when @col_name = 'columnB' then NEW.columnB
    -- and so on..
    else 'unknown column'
    END AS [NEW_col_value],
    CASE
    when @col_name = 'columnA' then OLD.columnA
    when @col_name = 'columnB' then OLD.columnB
    -- and so on..
    else 'unknown column'
    END AS [OLD_col_value]
FROM
    ...

如果列的类型不同 - 则将它们转换为文本..