Tengo una columna y me gustaría editar algunas de sus filas. El problema es que la tabla es una vista, así que no puedo editar las filas. ¿Cómo procedo a resolver este problema?Editar una vista de solo lectura
Respuesta
Si se trata de una vista, no es una tabla. Los datos para la vista se extraen de una o más tablas. Edite la tabla subyacente y cuando examine los datos en la vista, reflejará los cambios que realizó.
Una vista SQL es una tabla virtual, que se basa en la consulta SQL SELECT. Esencialmente, una vista está muy cerca de una tabla de base de datos real (tiene columnas y filas al igual que una tabla normal), excepto por el hecho de que las tablas reales almacenan datos, mientras que las vistas no. Los datos de la vista se generan dinámicamente cuando se hace referencia a la vista. Una vista hace referencia a una o más tablas de base de datos existentes u otras vistas. En efecto, cada vista es un filtro de los datos de tabla a los que se hace referencia y este filtro puede restringir tanto las columnas como las filas de las tablas a las que se hace referencia.
Si desea modificar los datos en su tabla, no puede hacerlo con una vista. Las vistas SQL son siempre de solo lectura. Si desea modificar su tabla fuera de la Vista, utilice algo como una declaración UPDATE
o ALTER TABLE
.
SQLite no le permite actualizar las vistas. Pero hace permite triggers en las vistas. Entonces puede escribir un disparador INSTEAD OF UPDATE
que realice las modificaciones apropiadas en la tabla subyacente.
Como señaló dan04, puede usar activadores para actualizar las vistas (como en la mayoría de las otras bases de datos). Para SQLite, consulte http://www.sqlite.org/lang_createtrigger.html#instead_of_trigger
Ejemplo con una vista llamada "myview", que contiene una tabla "my_t2"
CREATE TRIGGER myview_update INSTEAD OF UPDATE ON myview
BEGIN
UPDATE my_t2 SET field1 = new.field1, field2 = new.field2 WHERE my_t2.key = old.key;
END
- 1. Vista de solo lectura coherente de una base de datos
- 2. Cómo implementar una propiedad de solo lectura
- 3. Inicializando una propiedad de solo lectura
- 4. Hacer una rama TFS de solo lectura
- 5. Solo lectura colección observable
- 6. Abrir archivo de solo lectura
- 7. Python mmap ctypes - solo lectura
- 8. ¿navegador independiente de solo lectura?
- 9. Producir una copia de solo lectura de una clase, howto
- 10. Cómo devolver una copia de solo lectura de una colección
- 11. SQLite/PHP de solo lectura?
- 12. vista de superposición de cámara, solo para una vista previa?
- 13. Cómo editar varios modelos en una sola Vista Razor
- 14. ¿Por qué Request.QueryString es solo de lectura?
- 15. ¿Cómo puedo editar una vista usando phpMyAdmin 3.2.4?
- 16. Spring @Transactional solo lectura propagación
- 17. Solo lectura DB Connection Strings
- 18. Editar solo capa alfa en GIMP
- 19. ¿Cómo burlarse de una propiedad de solo lectura con simulacro?
- 20. Anulación de una propiedad de solo lectura con Rhino Mocks
- 21. Configuración de una propiedad de solo lectura con tipo anónimo
- 22. ¿Puede JAXB crear una propiedad de clase de "solo lectura"?
- 23. Intento escribir una base de datos de solo lectura: System.Data.SQLite
- 24. Celdas de solo lectura de DataGridView
- 25. Lista de cadenas de solo lectura
- 26. SQLite: base de datos de solo lectura
- 27. Colecciones de solo lectura de Entity Framework
- 28. Solo lectura para elementos existentes solo en Django admin inline
- 29. MySQL: ¿Cómo convertir una base de datos a solo lectura?
- 30. SQL Server 2005 - Establecer una columna como de solo lectura
Las vistas no son ciertamente * siempre * de sólo lectura en la mayoría de las bases de datos (aunque eso es cierto en SQLite) . La mayoría de las bases de datos admiten la edición de vistas no agregadas de una sola tabla. Algunas bases de datos también admiten la edición de vistas de varias tablas. –
Gracias por señalar eso. Puede actualizar los datos en una vista siempre que tenga los privilegios adecuados para las tablas subyacentes. Sin embargo, las vistas en SQLite son siempre de solo lectura. –