Zrobiłem widok MySQL z 4 tabelami. Czy jest możliwe wstawienie danych do widoku i czy MySQL automatycznie przekazuje dane do właściwej tabeli?Czy można wstawić dane do widoku MySQL?
38
A
Odpowiedz
51
Jeśli korzystasz z połączeń wewnętrznych, a widok zawiera wszystkie kolumny w tabelach podstawowych, widok może być aktualizowalny. Jednak w przypadku widoku aktualizowalnego z wieloma tabelami, INSERT
może działać, jeśli zostanie wstawiony do pojedynczej tabeli. Można podzielić operację wstawiania na wiele instrukcji INSERT
.
Możesz sprawdzić poniższy artykuł, aby uzyskać więcej informacji na temat:
Rozważmy następujący przykład:
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);
Teraz stwórzmy widok :
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)
Poniższy INSERT
zawiedzie:
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
Ale możemy podzielić ją na dwie operacje:
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)
Wynik:
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)
Powiązane problemy
- 1. dane wstawić do widoku (SQL Server)
- 2. Jak wstawić dane z mysql do combobox?
- 3. Jak wstawić dane tablicy do tabeli mysql
- 4. Korzystanie skrypt aby wstawić dane do bazy danych MySQL zdalnego
- 5. PHP - Aby wstawić dane z formularzy checkbox do MySQL
- 6. dane wstawić do tabeli BigQuery
- 7. Nie można wstawić byte [] do MySQL przy użyciu języka Java
- 8. IMDB do MySQL: Wstaw dane IMDB do bazy danych MySQL
- 9. psycopg - WSTAWIĆ spakowane dane do kolumny bytea
- 10. Nie można wstawić do edycji
- 11. MySql wstawić wyniki wybranej
- 12. MySQL - Jak wstawić do wielu tabel z kluczy obcych
- 13. wstawić do MySQL z innej tabeli
- 14. Jak wstawić moment JS do MySQL
- 15. Jak wstawić dodatkową zawartość do nagłówka strony z widoku strony?
- 16. Mysql wstawić na 2 stołach
- 17. Jak wstawić wartość dla kolumny bitowej mysql
- 18. Czy możemy zaktualizować dane w widoku
- 19. Jak wstawić znak specjalny, taki jak "do MySQL?
- 20. EF: Nie można wstawić NULL do kolumny
- 21. Jak wstawić wartości do kolumny auto identity w MYSQL
- 22. Czy mogę wstawić kolumnę w widoku listy w czasie wykonywania?
- 23. Czy można mieć indeksowany widok w MySQL?
- 24. Jak wstawić tablicę danych do mysql za pomocą php
- 25. Prześlij dane do widoku w Express
- 26. Czy można odczytać dane MongoDB, przetworzyć je za pomocą Hadoop i wyprowadzić do RDBS (MySQL)?
- 27. Jak wstawić zmienną do bazy danych z widoku w MVC
- 28. Hibernate: wstawić dane z klucz obcy
- 29. MySQL - wstawić jeżeli nie istnieje jeszcze
- 30. Jquery - Jak wstawić znak na dane wejściowe?
istnieje inny wiersz, który jest mising –
widzę usunąłeś ten wiersz powyżej, ponieważ mówi on o 6 wierszach, a masz tylko 5 powyżej. Ja też mam ten sam problem. –
Bardzo ważne jest, aby rzucić okiem na połączony artykuł. Dzięki. –