[SQL] 그것은 MySQL의 뷰에 데이터를 삽입 할 수 있습니까?
SQL그것은 MySQL의 뷰에 데이터를 삽입 할 수 있습니까?
나는 4 개 테이블 MySQL의보기를했다. 그것은보기에 데이터를 삽입하고 MySQL은 자동으로 올바른 테이블에 데이터를 전달해야 할 수 있습니까?
해결법
-
==============================
1.당신이 내부 사용하는 것은 조인하고보기는 기본 테이블의 모든 열이 포함 된 경우, 다음 뷰는 업데이트 할 수 있습니다. 그것은 하나의 테이블에 삽입하는 경우에는 여러 개의 테이블을 업데이트 할 수있는 뷰를 들어, INSERT는 작업 할 수 있습니다. 여러 INSERT 문으로 삽입 작업을 분할 할 수있다.
당신이 내부 사용하는 것은 조인하고보기는 기본 테이블의 모든 열이 포함 된 경우, 다음 뷰는 업데이트 할 수 있습니다. 그것은 하나의 테이블에 삽입하는 경우에는 여러 개의 테이블을 업데이트 할 수있는 뷰를 들어, INSERT는 작업 할 수 있습니다. 여러 INSERT 문으로 삽입 작업을 분할 할 수있다.
당신은 주제에 대한 자세한 내용은 다음 문서를 체크 아웃 할 수 있습니다 :
다음 예를 살펴 보겠습니다 :
CREATE TABLE table_a (id int, value int); CREATE TABLE table_b (id int, ta_id int, value int); INSERT INTO table_a VALUES (1, 10); INSERT INTO table_a VALUES (2, 20); INSERT INTO table_a VALUES (3, 30); INSERT INTO table_b VALUES (1, 1, 100); INSERT INTO table_b VALUES (2, 1, 200); INSERT INTO table_b VALUES (3, 2, 300); INSERT INTO table_b VALUES (4, 2, 400);
이제 뷰를 만들 수 있습니다 :
CREATE VIEW v AS SELECT a.id a_id, b.id b_id, b.ta_id, a.value v1, b.value v2 FROM table_a a INNER JOIN table_b b ON (b.ta_id = a.id); SELECT * FROM v; +------+------+-------+------+------+ | a_id | b_id | ta_id | v1 | v2 | +------+------+-------+------+------+ | 1 | 1 | 1 | 10 | 100 | | 1 | 2 | 1 | 10 | 200 | | 2 | 3 | 2 | 20 | 300 | | 2 | 4 | 2 | 20 | 400 | +------+------+-------+------+------+ 4 rows in set (0.00 sec)
다음 INSERT가 실패합니다 :
INSERT INTO v (a_id, b_id, ta_id, v1, v2) VALUES (3, 5, 3, 30, 500); -- ERROR 1393 (HY000): Can not modify more than one base table through a join view
그러나 우리는 두 가지 작업으로 분할 할 수 있습니다 :
INSERT INTO v (a_id, v1) VALUES (3, 30); -- Query OK, 1 row affected (0.00 sec) INSERT INTO v (b_id, ta_id, v2) VALUES (5, 3, 500); -- Query OK, 1 row affected (0.00 sec)
결과:
SELECT * FROM v; +------+------+-------+------+------+ | a_id | b_id | ta_id | v1 | v2 | +------+------+-------+------+------+ | 1 | 1 | 1 | 10 | 100 | | 1 | 2 | 1 | 10 | 200 | | 2 | 3 | 2 | 20 | 300 | | 2 | 4 | 2 | 20 | 400 | | 3 | 5 | 3 | 30 | 500 | +------+------+-------+------+------+ 6 rows in set (0.00 sec)
from https://stackoverflow.com/questions/3825941/is-it-possible-to-insert-data-into-a-mysql-view by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 테이블을 삭제할 수 없습니다 : 외부 키 제약이 실패 (0) | 2020.07.22 |
---|---|
[SQL] 어떻게 Heroku가에 일반 텍스트 포스트 그레스 데이터베이스 덤프를받을 수 있나요? (0) | 2020.07.22 |
[SQL] SQL Server를 사용하여 많은 관계로 하나 만들기 (0) | 2020.07.22 |
[SQL] 나는 구조체로 데이터베이스 행을 변환하려면 어떻게 (0) | 2020.07.21 |
[SQL] 범위 1에서 난수를 생성 - (10) (0) | 2020.07.21 |