CREATE TABLE IF NOT EXISTS `blog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(128) NOT NULL,
`text` text NOT NULL,
`creation` datetime NOT NULL,
`modification` datetime NOT NULL,
`img` varchar(128) NOT NULL DEFAULT 'default.png',
`status` tinyint(4) NOT NULL DEFAULT '2',
`user_id` int(11) NOT NULL,
`rate` int(11) NOT NULL,
`relax_type` tinyint(4) NOT NULL,
`timers` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`contest` tinyint(1) NOT NULL DEFAULT '0',
`views` int(11) NOT NULL DEFAULT '0',
`comment` int(11) NOT NULL,
`url` varchar(128) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `url` (`url`),
KEY `country_id` (`country_id`),
KEY `user_id` (`user_id`),
KEY `status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1456435 ;
CREATE TABLE IF NOT EXISTS `comments` (
`owner_name` varchar(50) NOT NULL,
`owner_id` int(12) NOT NULL,
`id` int(12) NOT NULL AUTO_INCREMENT,
`parent_id` int(12) DEFAULT NULL,
`user_id` int(12) DEFAULT NULL,
`text` text,
`creation` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`status` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `owner_name` (`owner_name`,`owner_id`),
KEY `parent_id` (`parent_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=243254252 ;
CREATE TRIGGER `add_count_comment` AFTER INSERT ON `comments`
FOR EACH ROW BEGIN
//
UPDATE user SET user.countcomment= user.countcomment+1 WHERE user.id = NEW.user_id;
//
CASE NEW.`owner_name`
WHEN 'Blog' THEN UPDATE `blog` SET `blog`.`comment` = `blog`.`comment`+1 WHERE `blog`.id = NEW.`owner_id` ;
WHEN 'Article' THEN UPDATE `article` SET `article`.`comment` = `article`.`comment`+1 WHERE `article`.`id` = NEW.`owner_id` ;
WHEN 'PopulatePlace' THEN UPDATE `populate_place` SET `populate_place`.`comment` = `populate_place`.`comment`+1 WHERE `populate_place`.`id` = NEW.`owner_id` ;
END CASE;
//
// url ,
CASE NEW.`owner_name`
WHEN 'Blog' THEN SET userurl = (SELECT url FROM `blog` WHERE `blog`.id= NEW.`owner_id`);
WHEN 'Article' THEN SET userurl = (SELECT url FROM `article` WHERE article.id=NEW.`owner_id`);
WHEN 'PopulatePlace' THEN SET userurl = ``;
END CASE;
// ,
CASE NEW.`owner_name`
WHEN 'Blog' THEN SET usertitle = (select title from `blog` where blog.id=NEW.`owner_id`);
WHEN 'Article' THEN SET usertitle = (select title from `article` where article.id=NEW.`owner_id`);
WHEN 'PopulatePlace' THEN SET usertitle = ` `;
END CASE;
INSERT INTO user_has_events VALUES (NEW.user_id,NEW.id,"Comments",NOW(),userurl , usertitle );
END
CREATE TRIGGER `del_count_comment` AFTER DELETE ON `comments`
FOR EACH ROW BEGIN
UPDATE user SET user.countcomment= user.countcomment -1 WHERE user.id = OLD.user_id;
CASE OLD.`owner_name`
WHEN 'Blog' THEN UPDATE `blog` SET `blog`.`comment` = `blog`.`comment`-1 WHERE `blog`.`id` = OLD.`owner_id` ;
WHEN 'Article' THEN UPDATE `article` SET `article`.`comment` = `article`.`comment`-1 WHERE `article`.`id` = OLD.`owner_id` ;
WHEN 'PopulatePlace' THEN UPDATE `populate_place` SET `populate_place`.`comment` = `populate_place`.`comment`-1 WHERE `populate_place`.`id` = OLD.`owner_id` ;
END CASE;
END
CREATE TRIGGER `ins_blog` BEFORE INSERT ON `blog`
// «» .
FOR EACH ROW BEGIN
SET NEW.modification = NOW();
END
CREATE TRIGGER `ins_blog` BEFORE UPDATE ON `blog`
// «» .
FOR EACH ROW BEGIN
SET NEW.modification = NOW();
END
Source: https://habr.com/ru/post/146717/
All Articles