【发布时间】:2018-07-01 15:42:12
【问题描述】:
我正在使用 MySQL 学习 SQL,但当我尝试从具有外连接的视图更新时遇到问题
这是一个例子:
DROP TABLE IF EXISTS t1;
CREATE TABLE IF NOT EXISTS t1 (
id tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT,
t2_id tinyint(3) UNSIGNED DEFAULT NULL,
col3 varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO t1 (id, t2_id, col3) VALUES
(1, 1, 'a'),
(2, 1, 'b'),
(3, 2, '3'),
(4, 2, '7'),
(5, NULL, '!');
DROP TABLE IF EXISTS t2;
CREATE TABLE IF NOT EXISTS t2 (
id tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT,
col2 varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO t2 (id, col2) VALUES
(1, 'Character'),
(2, 'Number');
CREATE OR REPLACE
VIEW v_t1_details
AS SELECT t1.id, t2.col2, t1.col3
FROM t1
LEFT JOIN t2 ON t1.t2_id = t2.id;
我使用的是 MySQL 5.7(5.7.14 和 5.7.19,在两个版本之间完全卸载并重新安装),当我使用此查询时会发生以下情况:
UPDATE v_t1_details SET col3 = 'c' WHERE id = 2;
#1288 - The target table v_t1_details of the UPDATE is not updatable
我知道不可能在插入请求中使用外连接,但我在我的课程或 MySQL 文档中没有看到类似的更新,所以我想知道它为什么不起作用。
感谢您的宝贵时间。
【问题讨论】:
标签: mysql join outer-join sql-view