2016-03-05 127 views
0

我試圖爲每個博客條目自動生成摘要如果摘要不存在。 所以,我編寫此觸發器:TRIGGER和IF IS NULL

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 INTO Blog(title,summary,content,author) VALUES('Test', NULL, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit……', 2); 

我插入«空»。爲什麼我的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總結爲空的話,採取的第一個149字符的«內容»並將其用作摘要。 就是這樣...

但是......爲什麼......它不工作?

非常感謝您的幫助!

回答

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 ;