我工作了很多次。 MySQL,但没有视图。我想做的事情在概念上很简单。有两个表,创建一个组合它们的视图,并像表一样插入/更新/删除视图。类似的东西:
示例:
CREATE TABLE IF NOT EXISTS `baseuser` (
`id` int(11) NOT NULL,
`uname` varchar(55) NOT NULL,
`pwd` varchar(55) NOT NULL
) ENGINE=InnoDB ;
CREATE TABLE IF NOT EXISTS `facultydet` (
`id` int(11) NOT NULL,
`baseuser_id` int(11) NOT NULL,
`department` varchar(55) DEFAULT NULL
) ENGINE=InnoDB;
CREATE ALGORITHM = MERGE
VIEW `facultyuser`
AS SELECT `baseuser`.`id` AS `id`, `uname`, `pwd`, `department`
FROM `baseuser`, `facultydet`
WHERE `facultydet`.`baseuser_id` = `baseuser`.`id`;
以上创建了我可以更新的视图' facultyuser,但是我无法在' facultyuser'中插入或删除。视图。有没有办法直接用这样的视图做到这一点?我在VIEW和TABLE defs上尝试了不同的变体,查看了mysql文档,但显然我错过了一些东西。任何建议表示赞赏。
谢谢,
克里斯
答案 0 :(得分:1)
直接来自文档18.4.3 Updatable and Insertable Views:
关于可插入性(可用INSERT更新) 如果语句也满足,则可更新视图是可插入的 视图列的这些附加要求:
必须没有重复的视图列名称。
视图必须包含基表中没有的所有列 默认值。
视图列必须是简单的列引用。他们一定不是 表达式或复合表达式
此外,您无法在连接视图中修改多个表,因此您对这种方法基本上没有运气。
有时候多表视图可以更新, 假设它可以使用MERGE算法进行处理。为了这 要工作,视图必须使用内连接(不是外连接或 联盟)。此外,视图定义中只能有一个表 更新强>