Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - Автозамена строки из другой строки - trigger? procedure ?

Ответить
Настройки темы
MySQL - Автозамена строки из другой строки - trigger? procedure ?

Аватара для BugZZ

Старожил


Сообщения: 184
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: BugZZ
Дата: 18-09-2009
Описание: ошибка в заголовке
Доброго времени суток.
Вобщем ситуация такая - есть две таблицы.
client (cID, name, firstname, adress,...)
task (tID, old_adress, new_adress, done [ENUM ('YES','NO')], cID) <- где cID - foreign key

задумка такая.
У клиента есть адресс. Например, client(1, 'pupkin', 'vasja', 'Oldstreet 1',.......)
В таблице task есть ЗАДАНИЕ на переезд этого клиента со старого [old_adress] адресса на новый [new_adress]. Статуст [done], который автоматически ставиться на НЕ СДЕЛАН (NO) Например - (5, 'oldstreet 1', 'newstreet 35', NO, 1)

Надо что бы после изменения статуса [done] на ВЫПОЛНЕН (YES) в таблице task, новый адресс [new_adress] из этой же таблицы заменял АДРЕСС [adress] в таблице client

тоесть "пешком" это выглядело бы так.

PHP код: Выделить весь код

/* Юзер обновляет статус на ВЫПОЛНЕН [DONE->YES] */

UPDATE task SET done 1 where tID 

получается:
task (5, 'oldstreet 1', 'newstreet 35', YES, 1)
после чего обновляется таблица client
PHP код: Выделить весь код

/* Замена старого адресса в таблице client новым [new_adress] из task */

UPDATE clien SET adress = (SELECT new_adress FROM task WHERE tID AND cID 1where cID 

получается:
(1, 'pupkin', 'vasja', 'newstreet 35',.......)
Так то все работет, вот только хотелось бы чтоб все было не "пешком" а происходило автоматом ПОСЛЕ обновления task, тобишь нужен триггер/процедура.

Я уже пробовал что-то настряпать, но ...ума не хватает


PHP код: Выделить весь код

CREATE TRIGGER     update_old_ardess 

AFTER UPDATE ON      task 
FOR EACH ROW BEGIN     
IF NEW.done 1 THEN         
UPDATE client SET OLD
.adress =  
/* ... a вот тут я не знаю как дальше  ..и так ли оно вообще   */
/* надо же чтоб не всем адреса но новые поменялись а только тем у кого ID совпадают...*/    
END IF; 
END

Заранее спасибо.


ЗЫ. Модераторы, пожалуйста, исправте ошибку в заголовке. Вместо Автозамена строки из другой строки - trigger? procedure ? исправте на Автозамена строки из другой таблицы - trigger? procedure ?

Отправлено: 09:51, 18-09-2009

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - Автозамена строки из другой строки - trigger? procedure ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
.NET - перечисляемые строки Surround Программирование и базы данных 3 05-10-2009 19:57
[решено] Скрытое управление GUI другой проги - без командной строки ? Nik_rus AutoIt 2 12-08-2009 12:21
строки в С++ rodman Программирование и базы данных 7 02-07-2004 12:54
Строки в С\С++ netmax Программирование и базы данных 30 03-11-2003 18:57




 
Переход