Новичок
Покинул форум
Сообщений всего: 15
Дата рег-ции: Апр. 2013
Помог: 0 раз(а)
|
Доброго времени суток, уважаемые Форумчане)
Друзья, пытаюсь создать триггер который удалял бы хвосты файлов при удалении директории но, пред моим взором навязчиво возникает мною заскриненая и к посту прикрепленная ошибка. Может это Денвер лагает и лучше его заменить Xampp(ом)?
А вот собственно и код злополучного триггера.
CODE ( SQL):
скопировать код в буфер обмена
DELIMITER $$ CREATE OR REPLACE TRIGGER `tg_foto_dir` AFTER DELETE ON `ac_foto_dir` ALTER EACH ROW BEGIN IF(SELECT COUNT(*) FROM `ac_foto_file` WHERE `id_dir` = OLD.id LIMIT 1) = 1 THEN (DELETE FROM `ac_foto_file` WHERE `id_file` = OLD.id) END IF; END $$ DELIMITER;
Триггер №2 (Они взаимосвязаны, посему - неразлучны))
CODE ( SQL):
скопировать код в буфер обмена
DELIMITER $$ CREATE OR REPLACE TRIGGER `tg_foto_alb` AFTER DELETE ON `ac_foto_album` ALTER EACH ROW BEGIN IF(SELECT COUNT(*) FROM `ac_foto_album` WHERE `id_album` = OLD.id) = 1 THEN (DELETE FROM `ac_foto_file` WHERE `id_album` = OLD.id) END IF; END $$ DELIMITER;
Таблица директорий
CODE ( SQL):
скопировать код в буфер обмена
/* Таблица директорий в фотоальбомах */ CREATE TABLE IF NOT EXISTS `ac_foto_dir` ( `id` SERIAL, `time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'Время создания директории', `time_alter` TIMESTAMP COMMENT 'Время последнего изминения', `open` SET('0', '1') NOT NULL DEFAULT '0' COMMENT 'Возможность создавать фотоальбомы в директории. 1 - можно, 0 - запрещено', `size` bigint UNSIGNED NOT NULL DEFAULT '1024' COMMENT 'Максимальный вес выгружаеиого снимка', `dir` varchar(5120) NOT NULL DEFAULT '/' COMMENT 'Адрес текущей директории', `dire` varchar(5120) NOT NULL DEFAULT '/' COMMENT 'Адрес предведущей директории', `name` varchar(128) NOT NULL DEFAULT '' COMMENT 'Название директории', `opis` varchar(1024) NOT NULL DEFAULT '' COMMENT 'Описание директории', PRIMARY KEY (`id`), UNIQUE KEY (`name`), KEY (`time`, `time_alter`, `open`, `size`) ) ENGINE InnoDB CHARACTER SET UTF8 COLLATE utf8_general_ci;
Таблица фотоальбомов
CODE ( SQL):
скопировать код в буфер обмена
CREATE TABLE IF NOT EXISTS `ac_foto_album` ( `id` SERIAL, `id_user` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID автора', `id_dir` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID директории', `time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'Время создания', `time_alter` TIMESTAMP COMMENT 'Время последнего обращения', `open` SET('0', '1', '2') NOT NULL DEFAULT '2' COMMENT 'Возможность просмотра снимков альбома другими пользователями. 2 - разрешено всем, 1 - только друзьям, 0 - запрещено всем', `pass` varchar(24) NOT NULL DEFAULT '' COMMENT 'Пароль на просмотр снимков альбома', `name` varchar(128) NOT NULL DEFAULT '' COMMENT 'Название альбома', `opis` varchar(520) NOT NULL DEFAULT '' COMMENT 'Описание альбома', PRIMARY KEY (`id`), KEY (`time`, `time_alter`, `open`), FOREIGN KEY (`id_dir`) REFERENCES `ac_foto_dir` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE ) ENGINE InnoDB CHARACTER SET UTF8 COLLATE utf8_general_ci;
Собственно сами файлы (снимки)
CODE ( SQL):
скопировать код в буфер обмена
CREATE TABLE IF NOT EXISTS `ac_foto_file` ( `id` SERIAL, `id_user` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID автора', `id_dir` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID директории снимка', `id_album` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID фотоальбома', `time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'Время создания', `time_alter` TIMESTAMP COMMENT 'Время последнего обращения', `open` SET('0', '1', '2') NOT NULL DEFAULT '2' COMMENT 'Возможность комментировать снимок. 2 - разрешено всем, 1 - только друзьям, 0 - запрещено', `let` SET('0', '1') NOT NULL DEFAULT '0' COMMENT 'Файл +18. 1 - да, 0 - нет', `size` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Вес снимка', `type` SET('png', 'jpg', 'jpeg', 'gif') NOT NULL COMMENT 'Формат снимка', `name` varchar(128) NOT NULL DEFAULT '' COMMENT 'Название снимка', `opis` varchar(5120) NOT NULL DEFAULT '' COMMENT 'Описание снимка', PRIMARY KEY (`id`), KEY (`time`, `time_alter`, `open`, `size`, `type`), FOREIGN KEY (`id_dir`) REFERENCES `ac_foto_dir` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY (`id_album`) REFERENCES `ac_foto_album` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE ) ENGINE InnoDB CHARACTER SET UTF8 COLLATE utf8_general_ci;
Заранее благодарен Вам. Спасибо дорогие, Друзья)(Отредактировано автором: 20 Апреля, 2013 - 19:15:07)
|