我正在尝试自动生成每个博客条目的摘要,如果摘要不存在。 所以,我编写了这个触发器:
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个字符并将其用作摘要。 只是......
但是......为什么......不起作用?
非常感谢你的帮助!
答案 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 ;