Sequenzia/db/schema.sql

593 lines
22 KiB
SQL
Executable File

CREATE TABLE `artists` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`alias_id` int(11) DEFAULT NULL,
`group_id` int(11) DEFAULT NULL,
`name` varchar(128) NOT NULL,
`updated_at` datetime NOT NULL,
`updater_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_artists__updater_id` (`updater_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `artists_urls` (
`artist_id` int(11) NOT NULL,
`url` varchar(256) NOT NULL,
`normalized_url` varchar(256) NOT NULL,
KEY `artist_id` (`artist_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `bans` (
`user_id` int(11) NOT NULL,
`reason` text NOT NULL,
`expires_at` datetime NOT NULL,
`banned_by` int(11) NOT NULL,
`old_level` int(11) NOT NULL,
KEY `user_id` (`user_id`),
KEY `fk_bans__banned_by` (`banned_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `batch_uploads` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`ip` varchar(15) NOT NULL,
`url` varchar(512) NOT NULL,
`tags` text NOT NULL,
`active` tinyint(1) NOT NULL DEFAULT '0',
`status` varchar(32) NOT NULL DEFAULT 'pending',
`created_at` datetime DEFAULT NULL,
`data_as_json` text NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_batch_uploads__user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `comments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`post_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`ip_addr` varchar(16) NOT NULL,
`created_at` datetime DEFAULT NULL,
`body` text NOT NULL,
`updated_at` datetime NOT NULL,
`is_spam` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `fk_comments__user_id` (`user_id`),
KEY `fk_comments__post_id` (`post_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `dmails` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`from_id` int(11) NOT NULL,
`to_id` int(11) NOT NULL,
`title` text NOT NULL,
`body` text NOT NULL,
`created_at` datetime DEFAULT NULL,
`has_seen` tinyint(1) NOT NULL DEFAULT '0',
`parent_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `from_id` (`from_id`,`to_id`),
KEY `fk_dmails__to_id` (`to_id`),
KEY `fk_dmails__parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `favorites` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`post_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`created_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `post_id__user_id` (`post_id`,`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `flagged_post_details` (
`created_at` datetime DEFAULT NULL,
`post_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`reason` varchar(512) NOT NULL,
`is_resolved` tinyint(1) NOT NULL DEFAULT '0',
KEY `post_id` (`post_id`),
KEY `fk_flag_post_details__user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `forum_posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
`title` text NOT NULL,
`body` text NOT NULL,
`creator_id` int(11) NOT NULL,
`parent_id` int(11) DEFAULT NULL,
`last_updated_by` int(11) DEFAULT NULL,
`is_sticky` tinyint(1) NOT NULL DEFAULT '0',
`response_count` int(11) NOT NULL DEFAULT '0',
`is_locked` tinyint(1) NOT NULL DEFAULT '0',
`text_search_index` text,
PRIMARY KEY (`id`),
KEY `fk_forum_posts__creator_id` (`creator_id`),
KEY `fk_forum_posts__last_updated_by` (`last_updated_by`),
KEY `fk_forum_posts__parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `histories` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime NOT NULL,
`user_id` int(11) DEFAULT NULL,
`group_by_id` int(11) NOT NULL,
`group_by_table` varchar(12) NOT NULL,
`aux_as_json` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `history_changes` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`column_name` char(24) NOT NULL,
`remote_id` bigint(20) NOT NULL,
`table_name` char(24) NOT NULL,
`value` text,
`history_id` bigint(20) unsigned NOT NULL,
`previous_id` bigint(20) DEFAULT NULL,
`value_index` text NOT NULL,
PRIMARY KEY (`id`),
KEY `previous_id` (`previous_id`),
KEY `fk_history_changes__history_id` (`history_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `ip_bans` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime DEFAULT NULL,
`expires_at` datetime DEFAULT NULL,
`ip_addr` varchar(15) NOT NULL,
`reason` text NOT NULL,
`banned_by` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_ip_bans__banned_by` (`banned_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `job_tasks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`task_type` varchar(64) NOT NULL,
`data_as_json` text,
`status` varchar(64) NOT NULL,
`status_message` text,
`repeat_count` int(11) NOT NULL DEFAULT '0',
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `note_versions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`x` int(11) NOT NULL,
`y` int(11) NOT NULL,
`width` int(11) NOT NULL,
`height` int(11) NOT NULL,
`body` text NOT NULL,
`version` int(11) NOT NULL,
`ip_addr` varchar(64) NOT NULL,
`is_active` tinyint(1) NOT NULL DEFAULT '1',
`note_id` int(11) NOT NULL,
`post_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `fk_note_versions__note_id` (`note_id`),
KEY `fk_note_versions__post_id` (`post_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `notes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`user_id` int(11) NOT NULL,
`x` int(11) NOT NULL,
`y` int(11) NOT NULL,
`width` int(11) NOT NULL,
`height` int(11) NOT NULL,
`ip_addr` varchar(64) NOT NULL,
`version` int(11) NOT NULL DEFAULT '1',
`is_active` tinyint(1) NOT NULL DEFAULT '1',
`post_id` int(11) NOT NULL,
`body` text NOT NULL,
PRIMARY KEY (`id`),
KEY `post_id` (`post_id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `pools` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) NOT NULL,
`description` text NOT NULL,
`user_id` int(11) NOT NULL,
`is_active` tinyint(1) NOT NULL DEFAULT '1',
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`post_count` int(3) NOT NULL DEFAULT '0',
`is_public` binary(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `pool_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `pools_posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`post_id` int(11) NOT NULL,
`pool_id` int(11) NOT NULL,
`sequence` varchar(16) NOT NULL,
`next_post_id` int(11) DEFAULT NULL,
`prev_post_id` int(11) DEFAULT NULL,
`active` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
KEY `post_id` (`post_id`),
KEY `fk_pools_posts__next_post_id` (`next_post_id`),
KEY `fk_pools_posts__prev_post_id` (`prev_post_id`),
KEY `fk_pools_posts__pool_id` (`pool_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `post_tag_histories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`post_id` int(11) NOT NULL,
`tags` text NOT NULL,
`user_id` int(11) NOT NULL,
`ip_addr` varchar(39) NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_post_tag_histories__post_id` (`post_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `post_votes` (
`post_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`score` int(1) DEFAULT '0',
`updated_at` datetime DEFAULT NULL,
UNIQUE KEY `post_id` (`post_id`,`user_id`),
KEY `score` (`score`),
KEY `fk_user_id__users_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`ip_addr` varchar(64) NOT NULL,
`file_size` int(11) NOT NULL,
`md5` varchar(32) NOT NULL,
`last_commented_at` datetime DEFAULT NULL,
`file_ext` varchar(4) NOT NULL,
`last_noted_at` datetime DEFAULT NULL,
`source` varchar(249) DEFAULT NULL,
`cached_tags` text NOT NULL,
`width` int(11) NOT NULL,
`height` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`rating` char(1) NOT NULL DEFAULT 'q',
`preview_width` int(3) NOT NULL,
`preview_height` int(3) NOT NULL,
`actual_preview_width` int(3) NOT NULL,
`actual_preview_height` int(3) NOT NULL,
`score` int(3) NOT NULL DEFAULT '0',
`is_shown_in_index` tinyint(1) NOT NULL DEFAULT '1',
`is_held` tinyint(1) NOT NULL DEFAULT '0',
`has_children` tinyint(1) NOT NULL DEFAULT '0',
`status` enum('deleted','flagged','pending','active') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'active',
`is_rating_locked` tinyint(1) NOT NULL DEFAULT '0',
`is_note_locked` tinyint(1) NOT NULL DEFAULT '0',
`parent_id` int(11) DEFAULT NULL,
`sample_width` int(5) DEFAULT NULL,
`sample_height` int(5) DEFAULT NULL,
`sample_size` int(11) DEFAULT NULL,
`index_timestamp` datetime DEFAULT NULL,
`jpeg_width` int(11) DEFAULT NULL,
`jpeg_height` int(11) DEFAULT NULL,
`jpeg_size` int(11) DEFAULT NULL,
`random` int(11) NOT NULL,
`approver_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `md5` (`md5`),
KEY `fk_posts__parent_id` (`parent_id`),
KEY `posts__approver_id` (`approver_id`),
KEY `fk_posts__user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `posts_tags` (
`post_id` int(11) NOT NULL,
`tag_id` int(11) NOT NULL,
UNIQUE KEY `post_id` (`post_id`,`tag_id`),
KEY `fk_posts_tags__post_id` (`post_id`),
KEY `fk_posts_tags__tag_id` (`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `schema_migrations` (
`version` varchar(255) NOT NULL,
UNIQUE KEY `version` (`version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `table_data` (
`name` varchar(32) NOT NULL,
`row_count` int(11) NOT NULL DEFAULT '0',
KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tag_aliases` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL,
`alias_id` int(11) NOT NULL,
`is_pending` tinyint(1) NOT NULL DEFAULT '0',
`reason` varchar(128) DEFAULT NULL,
`creator_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `alias_unique` (`name`,`alias_id`),
KEY `name` (`name`),
KEY `fk_tag_aliases__alias_id` (`alias_id`),
KEY `fk_tag_aliases__creator_id` (`creator_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tag_implications` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`predicate_id` int(11) NOT NULL,
`consequent_id` int(11) NOT NULL,
`is_pending` tinyint(1) NOT NULL DEFAULT '0',
`reason` varchar(128) DEFAULT NULL,
`creator_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `predicate_id__consequent_id` (`predicate_id`,`consequent_id`),
KEY `fk_tag_implications__consequent_id` (`consequent_id`),
KEY `fk_tag_implications__creator_id` (`creator_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tag_subscriptions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`tag_query` text CHARACTER SET latin1 NOT NULL,
`cached_post_ids` text CHARACTER SET latin1 NOT NULL,
`name` varchar(32) CHARACTER SET latin1 NOT NULL,
`is_visible_on_profile` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tags` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`post_count` int(11) NOT NULL DEFAULT '0',
`cached_related` text,
`cached_related_expires_on` datetime DEFAULT NULL,
`tag_type` smallint(6) NOT NULL,
`is_ambiguous` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `user_blacklisted_tags` (
`user_id` int(11) NOT NULL,
`tags` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
UNIQUE KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `user_records` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`reported_by` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`is_positive` tinyint(1) NOT NULL DEFAULT '1',
`body` text NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_user_records__user_id` (`user_id`),
KEY `fk_user_records__reported_by` (`reported_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`password_hash` varchar(40) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`level` int(11) NOT NULL DEFAULT '20',
`email` varchar(249) DEFAULT NULL,
`avatar_post_id` int(11) DEFAULT NULL,
`avatar_width` double DEFAULT NULL,
`avatar_height` double DEFAULT NULL,
`avatar_top` double DEFAULT NULL,
`avatar_bottom` double DEFAULT NULL,
`avatar_left` double DEFAULT NULL,
`avatar_right` double DEFAULT NULL,
`avatar_timestamp` datetime DEFAULT NULL,
`my_tags` text,
`invite_count` int(11) NOT NULL DEFAULT '0',
`invited_by` int(11) DEFAULT NULL,
`show_samples` tinyint(1) NOT NULL DEFAULT '1',
`show_advanced_editing` tinyint(1) NOT NULL DEFAULT '0',
`pool_browse_mode` tinyint(1) NOT NULL DEFAULT '0',
`use_browser` tinyint(1) NOT NULL DEFAULT '0',
`always_resize_images` tinyint(1) NOT NULL DEFAULT '0',
`last_logged_in_at` datetime DEFAULT NULL,
`last_forum_topic_read_at` datetime DEFAULT NULL,
`last_comment_read_at` datetime DEFAULT NULL,
`last_deleted_post_seen_at` datetime DEFAULT NULL,
`language` text,
`secondary_languages` text,
`receive_dmails` tinyint(1) NOT NULL DEFAULT '1',
`has_mail` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `fk_users__avatar_post_id` (`avatar_post_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `wiki_page_versions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
`version` int(11) NOT NULL DEFAULT '1',
`title` varchar(64) NOT NULL,
`body` text NOT NULL,
`user_id` int(11) DEFAULT NULL,
`ip_addr` varchar(15) NOT NULL,
`wiki_page_id` int(11) NOT NULL,
`is_locked` tinyint(1) NOT NULL DEFAULT '0',
`text_search_index` text NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `fk_wiki_page_versions__wiki_page` (`wiki_page_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `wiki_pages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
`version` int(11) NOT NULL DEFAULT '1',
`title` varchar(64) NOT NULL,
`body` text NOT NULL,
`user_id` int(11) DEFAULT NULL,
`ip_addr` varchar(15) NOT NULL,
`is_locked` tinyint(1) NOT NULL DEFAULT '0',
`text_search_index` text NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `artists`
ADD CONSTRAINT `fk_artists__updater_id` FOREIGN KEY (`updater_id`) REFERENCES `users` (`id`) ON DELETE SET NULL;
ALTER TABLE `artists_urls`
ADD CONSTRAINT `fk_artists_urls__artist_id` FOREIGN KEY (`artist_id`) REFERENCES `artists` (`id`) ON DELETE CASCADE;
ALTER TABLE `bans`
ADD CONSTRAINT `fk_bans__banned_by` FOREIGN KEY (`banned_by`) REFERENCES `users` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_bans__user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `batch_uploads`
ADD CONSTRAINT `fk_batch_uploads__user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `comments`
ADD CONSTRAINT `fk_comments__post_id` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_comments__user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `dmails`
ADD CONSTRAINT `fk_dmails__from_id` FOREIGN KEY (`from_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_dmails__parent_id` FOREIGN KEY (`parent_id`) REFERENCES `dmails` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_dmails__to_id` FOREIGN KEY (`to_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `flagged_post_details`
ADD CONSTRAINT `fk_flag_post_details__user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
ADD CONSTRAINT `fk_flag_post_det__post_id` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE;
ALTER TABLE `forum_posts`
ADD CONSTRAINT `fk_forum_posts__creator_id` FOREIGN KEY (`creator_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_forum_posts__last_updated_by` FOREIGN KEY (`last_updated_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
ADD CONSTRAINT `fk_forum_posts__parent_id` FOREIGN KEY (`parent_id`) REFERENCES `forum_posts` (`id`) ON DELETE CASCADE;
ALTER TABLE `history_changes`
ADD CONSTRAINT `fk_history_changes__history_id` FOREIGN KEY (`history_id`) REFERENCES `histories` (`id`) ON DELETE CASCADE;
ALTER TABLE `ip_bans`
ADD CONSTRAINT `fk_ip_bans__banned_by` FOREIGN KEY (`banned_by`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `note_versions`
ADD CONSTRAINT `fk_note_versions__note_id` FOREIGN KEY (`note_id`) REFERENCES `notes` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_note_versions__post_id` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE;
ALTER TABLE `notes`
ADD CONSTRAINT `fk_notes__post_id` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE;
ALTER TABLE `pools_posts`
ADD CONSTRAINT `fk_pools_posts__next_post_id` FOREIGN KEY (`next_post_id`) REFERENCES `posts` (`id`) ON DELETE SET NULL,
ADD CONSTRAINT `fk_pools_posts__pool_id` FOREIGN KEY (`pool_id`) REFERENCES `pools` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_pools_posts__post_id` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_pools_posts__prev_post_id` FOREIGN KEY (`prev_post_id`) REFERENCES `posts` (`id`) ON DELETE SET NULL;
ALTER TABLE `post_tag_histories`
ADD CONSTRAINT `fk_post_tag_histories__post_id` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE;
ALTER TABLE `post_votes`
ADD CONSTRAINT `fk_post_id__posts_id` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_user_id__users_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `posts`
ADD CONSTRAINT `fk_parent_id__posts_id` FOREIGN KEY (`parent_id`) REFERENCES `posts` (`id`) ON DELETE SET NULL,
ADD CONSTRAINT `fk_posts__user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL,
ADD CONSTRAINT `posts__approver_id` FOREIGN KEY (`approver_id`) REFERENCES `users` (`id`) ON DELETE SET NULL;
ALTER TABLE `posts_tags`
ADD CONSTRAINT `fk_posts_tags__post_id` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_posts_tags__tag_id` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE;
ALTER TABLE `tag_aliases`
ADD CONSTRAINT `fk_tag_aliases__alias_id` FOREIGN KEY (`alias_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_tag_aliases__creator_id` FOREIGN KEY (`creator_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `tag_implications`
ADD CONSTRAINT `fk_consequent_id` FOREIGN KEY (`consequent_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_tag_implications__consequent_id` FOREIGN KEY (`consequent_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_tag_implications__creator_id` FOREIGN KEY (`creator_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_tag_implications__predicate_id` FOREIGN KEY (`predicate_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE;
ALTER TABLE `user_blacklisted_tags`
ADD CONSTRAINT `fk_user_bl_tags__user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `user_records`
ADD CONSTRAINT `fk_user_records__reported_by` FOREIGN KEY (`reported_by`) REFERENCES `users` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `fk_user_records__user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `wiki_page_versions`
ADD CONSTRAINT `fk_wiki_page_versions__wiki_page` FOREIGN KEY (`wiki_page_id`) REFERENCES `wiki_pages` (`id`) ON DELETE CASCADE;
ALTER TABLE `wiki_pages`
ADD CONSTRAINT `fk_wiki_pages__user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL;
DELIMITER //
CREATE TRIGGER `pools_posts_insert_trg` BEFORE INSERT ON `pools_posts`
FOR EACH ROW
BEGIN
UPDATE pools SET post_count = post_count + 1 WHERE id = NEW.pool_id;
END
//
CREATE TRIGGER `pools_posts_update_trg` BEFORE UPDATE ON `pools_posts`
FOR EACH ROW
BEGIN
IF (OLD.active <> NEW.active) THEN
IF (NEW.active) THEN
UPDATE pools SET post_count = post_count + 1 WHERE id = NEW.pool_id;
ELSE
UPDATE pools SET post_count = post_count - 1 WHERE id = NEW.pool_id;
END IF;
END IF;
END
//
CREATE TRIGGER `pools_posts_delete_trg` BEFORE DELETE ON `pools_posts`
FOR EACH ROW
BEGIN
UPDATE pools SET post_count = post_count - 1 WHERE id = OLD.pool_id;
END
//
CREATE TRIGGER `trg_posts__insert` AFTER INSERT ON `posts`
FOR EACH ROW
BEGIN
UPDATE table_data SET row_count = row_count + 1 WHERE name = 'posts';
END
//
CREATE TRIGGER `trg_posts__delete` AFTER DELETE ON `posts`
FOR EACH ROW
BEGIN
UPDATE table_data SET row_count = row_count - 1 WHERE name = 'posts';
END
//
CREATE TRIGGER `trg_posts_tags__insert` AFTER INSERT ON `posts_tags`
FOR EACH ROW
BEGIN
UPDATE tags SET post_count = post_count + 1 WHERE tags.id = NEW.tag_id;
END
//
CREATE TRIGGER `trg_posts_tags__delete` AFTER DELETE ON `posts_tags`
FOR EACH ROW
BEGIN
UPDATE tags SET post_count = post_count - 1 WHERE tags.id = OLD.tag_id;
END
//
DELIMITER ;