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 :: Вопрос по mysql знатокам

 PHP.SU

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


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

> Без описания
mr_id
Отправлено: 14 Марта, 2011 - 12:57:02
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Окт. 2010  


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




Есть 2 таблицы например table1 и table2 у каждой есть поле id_contract

Вопрос возможно ли средствами mysql сделать так что бы в table1 была добавлена запись
в table2 была добавлена автоматически id_contract?
 
 Top
SAD Модератор
Отправлено: 14 Марта, 2011 - 12:59:21
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




триггер
 
 Top
mr_id
Отправлено: 14 Марта, 2011 - 13:53:01
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Окт. 2010  


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




А пример показать можете? Был бы очень благодарен.
 
 Top
EuGen Администратор
Отправлено: 14 Марта, 2011 - 13:55:11
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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





Нет, триггер не нужен, нужен внешний ключ с соответствующим свойством ON UPDATE CASCADE, а так же тип таблицы InnoDB:
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]constraints[dot]html
- там и примеры найдете

А, прошу прощения, неправильно понял - нужно же Добавлять, а не обновлять. Тогда да, нужен триггер.
Вот мой пример:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. DROP TRIGGER IF EXISTS `update_status`//
  3. CREATE TRIGGER `update_status` AFTER UPDATE ON `YOUR_TABLE`
  4.  FOR EACH ROW begin
  5. IF new.STATUS != old.STATUS then
  6. INSERT INTO YOUR_ANOTHER_TABLE (user_id, status_was, status_became, change_date) VALUES (old.id, old.STATUS, new.STATUS, NOW());
  7. end IF;
  8. end
  9. //
  10.  

- триггер отлавливает изменение поля status и помещает информацию в другую таблицу о его статусе. В Вашем случае нужно будет его модифифировать на вставку.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
mr_id
Отправлено: 14 Марта, 2011 - 16:18:19
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Окт. 2010  


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




Спасибо помощь.
Буду разбираться

(Отредактировано автором: 14 Марта, 2011 - 16:18:59)

 
 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