CREATE TABLE `news` (
`box_news_id` int(11) NOT NULL auto_increment,
`news_added_date` datetime NOT NULL default '0000-00-00 00:00:00',
`news_modified_date` datetime default NULL,
`news_start_date` datetime default NULL,
`news_end_date` datetime default NULL,
`news_published_date` datetime default NULL,
`news_status` tinyint(1) default '0',
`more_news_page` tinyint(1) default '0',
PRIMARY KEY (`box_news_id`)
) TYPE=MyISAM AUTO_INCREMENT=1;CREATE TABLE `news_content` (
`box_news_id` int(11) NOT NULL default '0',
`languages_id` int(11) NOT NULL default '1',
`news_title` varchar(64) NOT NULL default '',
`news_content` text NOT NULL,
PRIMARY KEY (`languages_id`,`box_news_id`)
) TYPE=MyISAM;
我现在又这两张表,上面是放新闻除文字外的信息,下面这个是新闻标题和新闻内容,news_status是判断是否显示这条新闻的,我现在想实现永远只有50条新闻显示,而且是新加的新闻显示。
`box_news_id` int(11) NOT NULL auto_increment,
`news_added_date` datetime NOT NULL default '0000-00-00 00:00:00',
`news_modified_date` datetime default NULL,
`news_start_date` datetime default NULL,
`news_end_date` datetime default NULL,
`news_published_date` datetime default NULL,
`news_status` tinyint(1) default '0',
`more_news_page` tinyint(1) default '0',
PRIMARY KEY (`box_news_id`)
) TYPE=MyISAM AUTO_INCREMENT=1;CREATE TABLE `news_content` (
`box_news_id` int(11) NOT NULL default '0',
`languages_id` int(11) NOT NULL default '1',
`news_title` varchar(64) NOT NULL default '',
`news_content` text NOT NULL,
PRIMARY KEY (`languages_id`,`box_news_id`)
) TYPE=MyISAM;
我现在又这两张表,上面是放新闻除文字外的信息,下面这个是新闻标题和新闻内容,news_status是判断是否显示这条新闻的,我现在想实现永远只有50条新闻显示,而且是新加的新闻显示。
CREATE TRIGGER trigger_news AFTER INSERT ON news FOR EACH ROW
BEGIN
UPDATE news t1,
(SELECT t1.box_news_id,COUNT(*) ct FROM news t3,news t4 WHERE t3.news_added_date>t4.news_added_date) t2
SET t1.news_status=1
WHERE t1.news_added_date=t2.news_added_date AND t2.ct>=50;
END;
|
DELIMITER ;
所以你要求的功能 在`news`表中INSERT记录的同时将某条记录的`news_status` 改为0 是无法通过 触发器 来实现。