Hice una vista de MySQL con 4 tablas. ¿Es posible insertar datos en la vista y hacer que MySQL pase automáticamente los datos a la tabla correcta?¿Es posible insertar datos en una vista de MySQL?
38
A
Respuesta
51
Si está utilizando combinaciones internas, y su punto de vista contiene todas las columnas de las tablas base, entonces su punto de vista puede ser actualizable. Sin embargo, para una vista actualizable de múltiples tablas, INSERT
puede funcionar si se inserta en una sola tabla. Puede dividir su operación de inserción en múltiples instrucciones INSERT
.
Es posible que desee echa un vistazo al siguiente artículo para obtener más información sobre el tema:
Consideremos el siguiente ejemplo:
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);
Ahora vamos a crear una vista :
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)
La siguiente INSERT
falla:
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
pero podemos dividirlo en dos operaciones:
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)
Resultado:
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)
Cuestiones relacionadas
- 1. ¿Es posible insertar Object en una base de datos?
- 2. ¿Es posible tener una vista indexada en MySQL?
- 3. Insertar datos binarios en MySQL (sin PreparedStatement)
- 4. ¿es posible insertar en función de seleccionar en una de las columnas en MySQL?
- 5. ¿Es posible acelerar una suma() en MySQL?
- 6. ¿Es posible hacer una copia masiva en mysql
- 7. ¿Es posible que mysql cree una base de datos distribuida?
- 8. ¿Es posible enmascarar una vista en Android?
- 9. En Oracle, ¿es posible "insertar" una columna en una tabla?
- 10. En Oracle, ¿es posible INSERTAR o ACTUALIZAR un registro a través de una vista?
- 11. ¿Es posible ejecutar una cadena en MySQL?
- 12. MySQL Math - ¿Es posible calcular una correlación en una consulta?
- 13. ¿Es posible cambiar el tipo de datos de una columna en una vista?
- 14. ¿Es posible obtener nuevos valores para Id (IDENTIDAD) antes de insertar datos en una tabla?
- 15. ¿Es posible insertar una tabla de datos VB.NET completa en un servidor SQL a la vez
- 16. Android: ¿Es posible hacer una copia de una Vista?
- 17. ¿Es posible suprimir la actualización después de insertar en NHibernate?
- 18. ¿Es posible cargar una base de datos en la RAM?
- 19. ¿Es posible insertar un formulario dentro de una tabla html?
- 20. Insertar número secuencial en MySQL
- 21. Cómo insertar DECIMAL en la base de datos MySQL
- 22. ¿Es posible cambiar filas y columnas en una vista de cuadrícula de datos?
- 23. SlickGrid ¿qué es una vista de datos?
- 24. mysql :: insertar en la tabla, datos de otra tabla?
- 25. Seleccionar e insertar en varias bases de datos con MySQL
- 26. ¿Cómo insertar un archivo en la base de datos MySQL?
- 27. Insertar datos en la tabla de MySQL con Java
- 28. Insertar varias filas en MySQL
- 29. ¿Insertar valores múltiples en una columna mysql?
- 30. ¿Es posible deshabilitar el desplazamiento en una lista Vista?
hay otra fila que se Mising –
puedo ver que haya eliminado la fila de arriba, como se dice 6 filas mientras que usted tiene sólo 5 above.I también estoy enfrentando el mismo problema –
Es muy importante tener una mirada en el artículo enlazado. Gracias. –