Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите составить триггер
 
 автор: Filsh   (07.01.2011 в 20:36)   письмо автору
 
 

Помогите мне написать триггер, там и писать то нечего, но у меня не получается
есть таблица

CREATE TABLE album_image(
    image_id int UNSIGNED NOT NULL AUTO_INCREMENT,
    album_id int UNSIGNED NOT NULL,
    image_format varchar(5) NOT NULL,
    posted boolean DEFAULT false,
    PRIMARY KEY(image_id),
    FOREIGN KEY (album_id) REFERENCES albums (album_id)
)TYPE = InnoDB DEFAULT CHARSET=utf8;

в ней image_id может иметь несколько одинаковых album_id, а posted может иметь только одно значение true. И при обновлении возникает проблема как же его так обновить что бы другие сбросить, а один обновился. Пишу триггер

DELIMITER $$
CREATE TRIGGER posted BEFORE UPDATE ON album_image
FOR EACH ROW
BEGIN
    UPDATE album_image SET posted = 0 WHERE album_id = NEW.album_id;
END$$
DELIMITER ;

Смысл в том что сначала я все сбрасываю в ноль и потом нужный мне обновляется, но он нифига не хочет работать.
Выполняю такой запрос
UPDATE album_image SET posted = 1 WHERE album_id = 2;

И он мне сыпет ошибку. Как мне быть? Спасибо.

  Ответить  
 
 автор: Trianon   (07.01.2011 в 20:40)   письмо автору
 
   для: Filsh   (07.01.2011 в 20:36)
 

может лучше в таблицу albums закатать поле posted_image_id ?
и триггеров не понадобится :)

  Ответить  
 
 автор: Filsh   (07.01.2011 в 20:57)   письмо автору
 
   для: Trianon   (07.01.2011 в 20:40)
 

у меня там есть это поле, просто в некоторых местах мне так не удобно делать,
та и прийдется юзать две таблицы. Но в любом случае спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования