Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Связи и тригеры
hurt3  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 143
Пользователь №: 38653
На форуме: 2 года, 11 месяцев, 2 дня
Карма:




всем привет.
Есть две таблицы
первая книги

book

id | book_name


и таблица связи книги и стола

link_book_tools

book_id | table_id

таблица бук содержит записи о книгах, книги раскиданы по "инструментам" многие ко многим.
И вот в чем суть как реализовать на уровне mysql грамотную очистку. Т.е. когда мы удаляем все записи из таблицы "связей" (link_book_tools) т.е. удаляем все связи определенной книги и инструментов, нужно что бы строка с id книги удалялась и из таблицы book

на уровне связи mysql это сделать не получилось, т.к.нет условия учитывающего полное удаление конкретного айдишника из таблицы link_book_tools, можно ли подобное организовать на уровне тригеров?

Т.е. тригер должен сработать после удаления, получить id книги, проверить есть ли связи с данным айдшником и если нет удалить строчку из таблицы book это возможно?

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 17 дней
Карма: 170




Цитата (hurt3 @ 3.04.2016 - 17:09)
на уровне связи mysql это сделать не получилось, т.к.нет условия учитывающего полное удаление конкретного айдишника из таблицы link_book_tools

What? Это как? При удалении, есть опция CASCADE, которая сама подчистит все связи с записью. Все замечательно работает.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
hurt3  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 143
Пользователь №: 38653
На форуме: 2 года, 11 месяцев, 2 дня
Карма:




T1grOK

смотрите она хороша в том случае если нужно, удалить последовательность книга -> все линки(конкретной книги) с инструментами
но если мы удаляем все линки(конкретной книги) , мы должны удалить книгу - это не сделать с помошью связей mysql. т.к. при удалении 1 линка удаляется и очищается и таблица книг, а затем ощищаються все связанные с ней линки
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 17 дней
Карма: 170




Цитата (hurt3 @ 3.04.2016 - 17:50)
т.к. при удалении 1 линка удаляется и очищается и таблица книг, а затем ощищаються все связанные с ней линки

Ничего подобного. Т-к основная сущность находится в другой таблице.
Цитата (hurt3 @ 3.04.2016 - 17:50)
но если мы удаляем все линки(конкретной книги) , мы должны удалить книгу

Тогда триггером(BEFORE DELETE) или на стороне своего приложения.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
hurt3  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 143
Пользователь №: 38653
На форуме: 2 года, 11 месяцев, 2 дня
Карма:




user posted image

вот картинка отражает структуру, когда мы удлаяем все красные блоки из второй таблицы, родительский красный блок должен удалится и из первой, но лишь когда все дочерние удалены из второй!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 17 дней
Карма: 170




Цитата (T1grOK @ 3.04.2016 - 18:04)
Тогда триггером(BEFORE DELETE) или на стороне своего приложения.



--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
hurt3  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 143
Пользователь №: 38653
На форуме: 2 года, 11 месяцев, 2 дня
Карма:




T1grOK

не получается его написать в phpmyadmin)))), можете ссылку на мануал нормальный скинуть, не понимаю как указывать переменную id которая отправляется приложением к бд
и phpmyadmin ругается на if end и т.п.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 17 дней
Карма: 170




Хм..сразу первая ссылка в поисковой выдаче
http://www.techonthenet.com/mysql/triggers/before_delete.php
OLD содержит данные удаляемой строки.
Проверяем доп запросом количество строк удовлетворяющее условию и принимаем решение.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
hurt3  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 143
Пользователь №: 38653
На форуме: 2 года, 11 месяцев, 2 дня
Карма:




а можно как то получить данные которые идут в запросе, после чего срабатывает тригер?

и еще вопрос допустим система будет постоянно добавлять и удалять линки не слишком большая нагрузка ляжет на систему с постоянной проверкой по триггеру?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 17 дней
Карма: 170




Цитата (hurt3 @ 3.04.2016 - 18:17)
а можно как то получить данные которые идут в запросе, после чего срабатывает тригер?

Все действия выполняются в тригере, на то он и триггер чтобы срабатывать по основным операциям CRUD.

Если в рассматриваемой системе операции удаления преобладают, перед операциями выборки и очень критична максимальная производительность, то использование задачи(скрипта), которая будет периодически подчищать данные в таблицах дадут меньший оверхед.


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
hurt3  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 143
Пользователь №: 38653
На форуме: 2 года, 11 месяцев, 2 дня
Карма:




T1grOK
понял спасибо большое
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса