Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2013, 22:56   #1
erwerwe
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 47
По умолчанию Синхронизации полей в бд на php

Здравствуйте, пытался составить триггер для синхронизации полей в бд, но не получилось, решил через php.

Дано - 1 бд, в ней 2 таблицы - cat_board_data и cat_advert.

В таблице cat_board_data есть числовое поле value_properties, его надо синхронизировать с полем descont в табл. cat_advert, т.е. когда вносятся данные в поле value_properties, они автоматически записывались в descont и наоборот.

Еще, в табл. cat_board_data есть поле n_advert (числовое), оно соответствует полю id_advert в табл. cat_advert, нужно соответственно что бы синхронизируемые поля имели тот же id (id_advert,n_advert).

Подскажите реализуема такая задача на php? Не знаю как подступиться к ней т.е. не понимаю логику.
erwerwe вне форума Ответить с цитированием
Старый 14.03.2013, 23:50   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Все таки лучше триггер замутить, показывайте а мы поможем. В пхп реально, но надо наверняка впихивать синхронизацию везде , где идет любое изменение одной или другой таблицы
ADSoft вне форума Ответить с цитированием
Старый 15.03.2013, 00:31   #3
erwerwe
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 47
По умолчанию

Пробовал такой триггер:

Код:
DELIMITER |
CREATE TRIGGER trigger_cat_advert BEFORE UPDATE ON cat_advert FOR EACH ROW BEGIN
UPDATE cat_board_data SET cat_board_data.value_properties = NEW.descont WHERE cat_board_data.n_advert = NEW.id_advert;
END;
|
CREATE TRIGGER trigger_cat_board_advert BEFORE UPDATE ON cat_board_data FOR EACH ROW BEGIN
UPDATE cat_advert SET cat_advert.descont = NEW.value_properties WHERE NEW.n_advert = cat_advert.id_advert;
END;
|
DELIMITER;
Ошибка в бд + не работает.
erwerwe вне форума Ответить с цитированием
Старый 15.03.2013, 10:32   #4
Mr_freeman
Форумчанин
 
Аватар для Mr_freeman
 
Регистрация: 17.01.2010
Сообщений: 277
По умолчанию

Потестил у себя, все работает. Попробуйте вот так:
Код:
delimiter //
CREATE TRIGGER trigger_cat_board_advert 
BEFORE UPDATE ON cat_board_data FOR EACH ROW 
BEGIN
UPDATE cat_advert SET cat_advert.descont = NEW.value_properties WHERE NEW.n_advert = cat_advert.id_advert;
END;
//
delimiter ;
и
Код:
delimiter //
CREATE TRIGGER trigger_cat_advert 
BEFORE UPDATE ON cat_advert FOR EACH ROW 
BEGIN
UPDATE cat_board_data SET cat_board_data.value_properties = NEW.descont WHERE cat_board_data.n_advert = NEW.id_advert;
END;
//
delimiter ;
Если не сработает - напишите текст ошибки
Mr_freeman вне форума Ответить с цитированием
Старый 15.03.2013, 22:00   #5
erwerwe
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 47
По умолчанию

Mr_freeman

Спасибо.

Последний раз редактировалось erwerwe; 16.03.2013 в 01:53.
erwerwe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод синхронизации kos1nus PHP 4 08.09.2011 08:42
Редактирование и удаление полей через php в базе данных darkhbz PHP 19 15.06.2011 20:53
Проблема синхронизации. beda Microsoft Office Word 3 30.06.2010 13:37
При удалении записей значения полей с type:=Autoincrement (т.е+) в оставшихся полей не изменяются kenta БД в Delphi 2 29.10.2009 08:28
Объеденение полей запроса в для отображения нескольких полей в одном списке mrCreator Microsoft Office Access 3 08.08.2009 00:53