Информация триггера mysql от триггеров вставки и обновления отношения один ко многим - PullRequest
2 голосов
/ 21 марта 2019

у меня есть 3 таблицы: а, б и в.Таблица a связана с таблицей b с отношением «один ко многим», а таблица c - это таблица, которая получает инициированную информацию из двух других таблиц.

 table a
 ------------------
  id     |    name
   1     |    Juan 
   2     |    Pete
   3     |    David

 table b
 ----------------------
  id  |  name   | table_a_id
   1  |  Dog    |     1
   2  |  Cat    |     2

Таблица C получает информацию из таблицы A со знаком « после вставки в A для каждой вставки строки в C »также получает информацию из таблицы B с« после вставки в B для каждого обновления строки C ».

 table c
----------------------
id | name a | name b | table_a_id |table_b_id
 1 |  juan  |   Dog  |      1     |      1
 2 |  Pete  |   Cat  |      2     |      2

Проблема возникает, когда Пит хочет иметь Кошку и Собаку одновременно, потому что она просто обновит информацию Пита.То, что я хочу, это способ, которым я могу иметь новую строку со всей информацией.

      table c
     -------------------------------------------
    id | name a | name b | table_a_id |table_b_id
     1 |  juan  |   Dog  |      1     |      1
     2 |  Pete  |   Cat  |      2     |      2
---->3 |  Pete  |   Dog  |      2     |      1

Эта третья строка из таблицы C не будет создана, она просто обновит строку 2 из таблицы C.

1 Ответ

0 голосов
/ 22 марта 2019

вместо физической копии table c следует создать «виртуальную таблицу» или представление .

Например:

CREATE VIEW table_c AS (
    SELECT
    t1.id AS a_id,
    t1.`name` AS a_name,
    t2.id AS b_id,
    t2.`name` AS b_name
    FROM table_a t1
    LEFT JOIN table_b t2
    ON (t2.table_a_id = t1.id)
)  

Теперь вы можете извлекать строки из этой «таблицы» следующим образом:

SELECT * FROM table_c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...