我正在尝试在将列添加到表中之前检查列中的插入。如果插入为null,我想基于同一表的另一列分配一个值。
我的源表是“文章”,它包含以下列:id,titre,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中刚起步一样,我只是找不到解决方法。有小费吗?
答案 0 :(得分:0)
如果要访问插入的行的列,则不需要SELECT
,则可以使用new
伪行。尝试更改分配:
...
SET NEW.resume = left(NEW.contenu, 150);
...