programing

왼쪽 조인 표시는 업데이트 가능합니까?

randomtip 2022. 9. 30. 09:40
반응형

왼쪽 조인 표시는 업데이트 가능합니까?

MariaDB 설명서에 따르면 VIEW는 외부 결합을 업데이트할 수 없습니다.

뷰가 다음 중 하나를 사용하는 경우 뷰를 업데이트에 사용할 수 없습니다. ...외부 결합...

제가 알기로는 '외부조인'에는 '좌파조인'과 '우파조인'이 포함되어 있죠?그러나 mariaDB v10.1.25에서 테스트하면 업데이트 가능합니다.내가 뭘 놓쳤지?

DROP TABLE IF EXISTS t1,t2;

CREATE TABLE t1(id INT, a TEXT);
INSERT INTO t1(id,a) VALUES (1,'a'),(2,'b'),(3,'c');

CREATE TABLE t2(id INT, b TEXT);
INSERT INTO t2(id,b) VALUES (1,'+'),(1,'-'),(2,'*');

CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1 LEFT JOIN t2 USING(id);

#UPDATE v1 SET a='x' WHERE id=3; # worked
#UPDATE v1 SET a='y' WHERE b IS NULL; # worked
#UPDATE v1 SET b='y' WHERE b IS NULL; # worked! even so, it does not make sense and does not update anything

SELECT * FROM t1;
SELECT * FROM t2;

ChangeLogs의 일부 엔트리.(댓글에 대한 답변이 링크 중 하나에 묻혀 있을 수 있습니다.)

----- 2015-08-03 5.7.8 릴리즈 후보 -- 버그 수정 -----

SET 구와 JOIN 구에서 같은 컬럼이 사용된 뷰의 복수 테이블 UPDATE( /doc/refman/5.7/en/update.http )가 준비된 스테이트먼트로 사용되었을 경우(Bug #76962, Bug #21045724) http://bugs.mysql.com/bug.php?id=76962

----- 2015-03-09 5.7.6 마일스톤16 -- Optimizer Notes -----

파생 테이블(FROM 절의 하위 쿼리) 또는 뷰 참조를 처리하려면 다음과 같이 하십시오. mysql> SET optimizer_switch = 'derived_merge=off';... http://bugs.mysql.com/bug.php?id=59203

----- 2015-06-04 MariaDB 10.1.5 및 2015-05-07 MariaDB 10.0.18 및 2015-05-01 MariaDB 5.5.43 -----

MDEV-7613 : Http://localhost/kb/en/mariadb-5540-release-notes/ 뷰와 함께 업데이트테이블 좌측 조인으로 MariaDB 5.5.40 서버가 크래시함

---------------------------------------------------------------------------------------------------------------

내추럴 조인과 머지 가능 뷰를 포함한 복수 테이블 UPDATE(http://dev.mysql.com/doc/refman/5.5/en/update.html)에 의해 어설션이 제기되었습니다.(버그 #47150) http://bugs.mysql.com/bug.php?id=47150

주의: 5.5는 MariaDB 10.1보다 이전 버전이며 수정이 포함되어 있어야 합니다. 5.7은 10.1보다 뒤에 있으므로 10.1에는 포함되지 않습니다.

언급URL : https://stackoverflow.com/questions/46036984/view-with-left-join-is-updatable

반응형