首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两张表中插入?

问在两张表中插入?
EN

Stack Overflow用户
提问于 2015-06-04 23:25:55
回答 1查看 2.2K关注 0票数 0

我做了很多MySQL的工作,但没有用视图。我想做的在概念上很简单。有两个表,创建一个组合它们的视图,并将/update/delete像表一样插入到视图中。类似于:

示例:

代码语言:javascript
复制
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”,我可以更新,但我不能插入或删除从‘学院用户’视图。有什么方法可以直接用这样的视图来完成吗?我尝试过视图和表防御的不同变体,查看mysql文档,但显然我遗漏了一些东西。任何建议都很感激。

谢谢,

克里斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-04 23:32:45

直接从docs 18.4.3可更新和不可更改的视图

关于可插入性(可以用INSERT语句更新),如果可更新视图满足视图列的这些额外要求,则可插入视图: 不能有重复的视图列名。 视图必须包含基表中没有默认值的所有列。 视图列必须是简单的列引用。它们不能是表达式或复合表达式。

此外,在join'd视图中不能修改多个表,因此从本质上说,这种方法是行不通的。

有时,假设可以使用合并算法处理多表视图,则可以对其进行更新。为此,视图必须使用内部连接(而不是外部连接或联合)。此外,只能更新视图定义中的单个表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30655868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档