TRIGGER和IF是NULL

时间:2016-03-05 12:54:08

标签: mysql triggers mariadb

我正在尝试自动生成每个博客条目的摘要,如果摘要不存在。 所以,我编写了这个触发器:

DELIMITER |
CREATE TRIGGER trigger_summary 
BEFORE INSERT ON Blog 
FOR EACH ROW 
BEGIN 
IF @summary IS NULL THEN
    SET @summary=LPAD(@content, 149, '…');
END IF;
END|

正确创建触发器。 但是当我插入一个没有摘要的新条目时......什么都没发生。 我不明白为什么因为汇总值为空。 我做的INSERT的一个例子:

INSERT INTO Blog(title,summary,content,author) VALUES('Test', NULL, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit……', 2);

我插入«NULL»。为什么我的TRIGGER不工作?

如果有以下情况,这是我的表结构:

CREATE TABLE `Blog` (
  `id` int(10) UNSIGNED NOT NULL,
  `title` varchar(200) NOT NULL DEFAULT '',
  `summary` text,
  `content` text NOT NULL,
  `author` int(10) UNSIGNED NOT NULL DEFAULT '0',
  `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我想要的很简单: 当makink一个INSERT: 如果IF摘要为NULL,则取“内容”的第149个字符并将其用作摘要。 只是......

但是......为什么......不起作用?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

您需要引用表格中的列。 @summary是一个变量:

DELIMITER |
CREATE TRIGGER trigger_summary 
BEFORE INSERT ON Blog 
FOR EACH ROW 
BEGIN 
    IF new.summary IS NULL THEN
        SET new.summary = LPAD(new.content, 149, '…');
    END IF;
END|
DELIMITER ;