首页 > 解决方案 > 插入 SQL 之前的 Pb TRIGGER

问题描述

我正在尝试在将列添加到我的表之前检查它的插入。如果插入为空,我想根据同一张表的另一列分配一个值。

我的源表是“文章”,它包含以下列:id、tire、resume、contenu。如果“resume”为空,我需要在“contenu”列中选取前 150 个字符来设置“resume”列。

DELIMITER |
CREATE TRIGGER before_insert_article BEFORE INSERT
ON article FOR EACH ROW

BEGIN
    IF NEW.resume IS NULL
        THEN 
            SET NEW.resume = (SELECT LEFT (NEW.contenu, 150) FROM article WHERE NEW.id = article.id) ;
END IF ;
END |

DELIMITER ;

所以......当然,它不起作用。我想我明白为什么,但就像我对 SQL 很陌生,我只是不知道如何解决我的问题。有小费吗?

标签: mysqltriggers

解决方案


如果要访问不需要的插入行的列,则SELECT可以使用new伪行。尝试更改分配:

...
SET NEW.resume = left(NEW.contenu, 150);
...

推荐阅读