Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Изучение триггеров

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Синдром навязчивых ошибок плак...
Ja_kazanova
Отправлено: 20 Апреля, 2013 - 17:26:52
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Доброго времени суток, уважаемые Форумчане)
Друзья, пытаюсь создать триггер который удалял бы хвосты файлов при удалении директории но, пред моим взором навязчиво возникает мною заскриненая и к посту прикрепленная ошибка. Может это Денвер лагает и лучше его заменить Xampp(ом)?
А вот собственно и код злополучного триггера.
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. DELIMITER $$
  3. CREATE OR REPLACE TRIGGER `tg_foto_dir`
  4. AFTER DELETE ON `ac_foto_dir`
  5. ALTER EACH ROW
  6. BEGIN
  7. IF(SELECT COUNT(*) FROM `ac_foto_file` WHERE `id_dir` = OLD.id LIMIT 1) = 1
  8. THEN (DELETE FROM `ac_foto_file` WHERE `id_file` = OLD.id) END IF;
  9. END $$
  10. DELIMITER;
  11.  

Триггер №2 (Они взаимосвязаны, посему - неразлучныУлыбка))
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. DELIMITER $$
  3. CREATE OR REPLACE TRIGGER `tg_foto_alb`
  4. AFTER DELETE ON `ac_foto_album`
  5. ALTER EACH ROW
  6. BEGIN
  7. IF(SELECT COUNT(*) FROM `ac_foto_album` WHERE `id_album` = OLD.id) = 1
  8. THEN (DELETE FROM `ac_foto_file` WHERE `id_album` = OLD.id) END IF;
  9. END $$
  10. DELIMITER;
  11.  

Таблица директорий
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. /*
  3.                 Таблица директорий в фотоальбомах
  4.         */
  5.         CREATE TABLE IF NOT EXISTS `ac_foto_dir`
  6.         (
  7.                 `id` SERIAL,
  8.                 `time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'Время создания директории',
  9.                 `time_alter` TIMESTAMP COMMENT 'Время последнего изминения',
  10.                 `open` SET('0', '1') NOT NULL DEFAULT '0' COMMENT 'Возможность создавать фотоальбомы в директории. 1 - можно, 0 - запрещено',
  11.                 `size` bigint UNSIGNED NOT NULL DEFAULT '1024' COMMENT 'Максимальный вес выгружаеиого снимка',
  12.                 `dir` varchar(5120) NOT NULL DEFAULT '/' COMMENT 'Адрес текущей директории',
  13.                 `dire` varchar(5120) NOT NULL DEFAULT '/' COMMENT 'Адрес предведущей директории',
  14.                 `name` varchar(128) NOT NULL DEFAULT '' COMMENT 'Название директории',
  15.                 `opis` varchar(1024) NOT NULL DEFAULT '' COMMENT 'Описание директории',
  16.                 PRIMARY KEY (`id`),
  17.                 UNIQUE KEY (`name`),
  18.                 KEY (`time`, `time_alter`, `open`, `size`)
  19.         ) ENGINE InnoDB CHARACTER SET UTF8 COLLATE utf8_general_ci;
  20.  

Таблица фотоальбомов
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2.         CREATE TABLE IF NOT EXISTS `ac_foto_album`
  3.         (
  4.                 `id` SERIAL,
  5.                 `id_user` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID автора',
  6.                 `id_dir` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID директории',
  7.                 `time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'Время создания',
  8.                 `time_alter` TIMESTAMP COMMENT 'Время последнего обращения',
  9.                 `open` SET('0', '1', '2') NOT NULL DEFAULT '2' COMMENT 'Возможность просмотра снимков альбома другими пользователями. 2 - разрешено всем, 1 - только друзьям, 0 - запрещено всем',
  10.                 `pass` varchar(24) NOT NULL DEFAULT '' COMMENT 'Пароль на просмотр снимков альбома',
  11.                 `name` varchar(128) NOT NULL DEFAULT '' COMMENT 'Название альбома',
  12.                 `opis` varchar(520) NOT NULL DEFAULT '' COMMENT 'Описание альбома',
  13.                 PRIMARY KEY (`id`),
  14.                 KEY (`time`, `time_alter`, `open`),
  15.                 FOREIGN KEY (`id_dir`) REFERENCES `ac_foto_dir` (`id`)
  16.                 ON DELETE RESTRICT ON UPDATE CASCADE
  17.         ) ENGINE InnoDB CHARACTER SET UTF8 COLLATE utf8_general_ci;
  18.  

Собственно сами файлы (снимки)
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2.         CREATE TABLE IF NOT EXISTS `ac_foto_file`
  3.         (
  4.                 `id` SERIAL,
  5.                 `id_user` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID автора',
  6.                 `id_dir` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID директории снимка',
  7.                 `id_album` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'ID фотоальбома',
  8.                 `time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'Время создания',
  9.                 `time_alter` TIMESTAMP COMMENT 'Время последнего обращения',
  10.                 `open` SET('0', '1', '2') NOT NULL DEFAULT '2' COMMENT 'Возможность комментировать снимок. 2 - разрешено всем, 1 - только друзьям, 0 - запрещено',
  11.                 `let` SET('0', '1') NOT NULL DEFAULT '0' COMMENT 'Файл +18. 1 - да, 0 - нет',
  12.                 `size` bigint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Вес снимка',
  13.                 `type` SET('png', 'jpg', 'jpeg', 'gif') NOT NULL COMMENT 'Формат снимка',
  14.                 `name` varchar(128) NOT NULL DEFAULT '' COMMENT 'Название снимка',
  15.                 `opis` varchar(5120) NOT NULL DEFAULT '' COMMENT 'Описание снимка',
  16.                 PRIMARY KEY (`id`),
  17.                 KEY (`time`, `time_alter`, `open`, `size`, `type`),
  18.                 FOREIGN KEY (`id_dir`) REFERENCES `ac_foto_dir` (`id`)
  19.                 ON DELETE RESTRICT ON UPDATE CASCADE,
  20.                 FOREIGN KEY (`id_album`) REFERENCES `ac_foto_album` (`id`)
  21.                 ON DELETE RESTRICT ON UPDATE CASCADE
  22.         ) ENGINE InnoDB CHARACTER SET UTF8 COLLATE utf8_general_ci;
  23.  

Заранее благодарен Вам. Спасибо дорогие, Друзья)

(Отредактировано автором: 20 Апреля, 2013 - 19:15:07)

 
 Top
Ja_kazanova
Отправлено: 20 Апреля, 2013 - 19:58:59
Post Id



Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Вопрос решен. Тему можно крыть.
Просто надо было убрать круглые скобки вокруг конструкции delete
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB