【发布时间】:2011-11-08 12:35:24
【问题描述】:
我一直在阅读有关 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 个源表的字段。我能想到的用单个查询进行插入的唯一方法是编写一个存储过程。
-
@Sam,您有一个示例说明如何使用存储过程来执行此操作吗?
标签: mysql sql database database-design data-structures