TRIGGER (SQL)
204
0
Доброго времени суток, уважаемые Форумчане)
Друзья, пытаюсь создать триггер который удалял бы хвосты файлов при удалении директории но, пред моим взором навязчиво возникает мною заскриненая и к посту прикрепленная ошибка. Может это Денвер лагает и лучше его заменить Xampp(ом)?
А вот собственно и код злополучного триггера.
Добавлено через 00:40 сек.
Таблица директорий
Друзья, пытаюсь создать триггер который удалял бы хвосты файлов при удалении директории но, пред моим взором навязчиво возникает мною заскриненая и к посту прикрепленная ошибка. Может это Денвер лагает и лучше его заменить Xampp(ом)?
А вот собственно и код злополучного триггера.
DELIMITER $$ CREATE OR REPLACE TRIGGER `tg_foto_dir` AFTER DELETE ON `ac_foto_dir` 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 (Они взаимосвязаны, посему - неразлучны ))
DELIMITER $$ CREATE OR REPLACE TRIGGER `tg_foto_alb` AFTER DELETE ON `ac_foto_album` BEGIN IF(SELECT COUNT(*) FROM `ac_foto_album` WHERE `id_album` = OLD.id LIMIT 1) = 1 THEN (DELETE FROM `ac_foto_file` WHERE `id_album` = OLD.id) END IF; END $$ DELIMITER;
Добавлено через 00:40 сек.
Таблица директорий
/* Таблица директорий в фотоальбомах */ 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;
0
Таблица фотоальбомов
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;
0
Собственно сами файлы (снимки)
Добавлено через 06:49 сек.
[URL=http://dfiles.ru/files/sd0parqcn]Скрин ошибки[/URL]
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;Заранее благодарен Вам. Спасибо дорогие, Друзья)
Добавлено через 06:49 сек.
[URL=http://dfiles.ru/files/sd0parqcn]Скрин ошибки[/URL]
Secret
20.04.2013 / 20:00
Землянин
Землянин
0
Загрузи скриншот сюда http://upwap.ru/upload/ а то с депозита мало кто будет его смотреть.
0
4. 78884115, СКРИН ОШИБКИ
Добавлено через 03:05 сек.
Добавлено через 03:05 сек.
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 (Они взаимосвязаны, посему - неразлучны ))
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 LIMIT 1) = 1 THEN (DELETE FROM `ac_foto_file` WHERE `id_album` = OLD.id) END IF; END $$ DELIMITER;Вот, вставил не достающие строки. Но, суть не изменилась, ошибка та-же.
0
Вопрос решен. Тему можно крыть.
Просто надо было убрать круглые скобки вокруг конструкции delete
Просто надо было убрать круглые скобки вокруг конструкции delete
Для выполнения действия необходимо авторизоваться!