Можно ли вставить «строку» в представление, состоящее из нескольких таблиц с общим первичным ключом с автоинкрементом? - PullRequest
1 голос
/ 01 сентября 2011

Я читал больше о представлениях в MySQL (не являясь моей сильной стороной), но теперь мне интересно, есть ли у кого-нибудь пример того, как вставить строку в представление, состоящее из более чем одной таблицы, где есть такое отношение супертип и подтип?

Например, иерархия «партийной модели» с указанием ролей работодателя и персонала:

      party
    _ _ | _ _
   |         |
employer   staff

Таблицы для которых (упрощенно):

party                             employer               staff
--------------------------------  ---------------------  -----------------
party_ID INT auto_increment (PK)  party_ID INT (FK)      party_ID INT (FK)
party_name VARCHAR                tax_reference VARHCAR  job_title VARCHAR
etc...                            etc...                 etc...

Я знаю, что могу создать представление для рассмотрения только соответствующих отношений:

CREATE VIEW staff_view AS SELECT party.party_ID, etc... FROM party INNER JOIN staff

Когда я добавляю сотрудника, я хочу создать запись в таблице участника, а затем сослаться на автоприращение party_ID в таблице персонала. Я не вижу, как выполнить вставку в одном выражении, что-то вроде:

INSERT INTO staff_view (party_name, job_title, etc...) VALUES ('John Doe', 'CEO', etc)

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

(документация MySQL: http://dev.mysql.com/doc/refman/5.1/en/view-updatability.html)

1 Ответ

0 голосов
/ 01 сентября 2011

Может быть, вы можете решить вашу проблему с помощью вставки триггер ?

...