TRIGGER (SQL)
206
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
You must be logged in to perform actions!