consulta actualizable

18/11/2003 - 08:44 por Racsus | Informe spam
hOLA

Quiero hacer una consulta basada en 3 tablas
relacionadas. La cuestión es que quiero
que la consulta que haga pueda ser actualizable, es decir,
que despues de hacerla y guardar pueda
hacer INSERTS Y UPDATES basados en esa consulta.

la datos de las 3 tablas son los siguientes:

tabla1 ->[USUARIOS] -> IDUSUARIO(c), IDPERFIL, NOMBRE
tabla2 ->[PERFILES] -> IDPERFIL(c), IDMODULO(c),
DESCRIPCION
tabla3 ->[MODULOS] -> IDMODULO(c), IDPERFIL(c), EJECUTAR,
MODIFICA,...

Y las relaciones son las siguientes:

[USUARIOS].IDPERFIL -> [PERFILES].IDPERFIL
[PERFILES].IDPERFIL, [PERFILES].IDMODULO ->
[MODULOS].IDMODULO, [MODULOS].IDPERFIL

He probado hacer un parde consultas, pero ninguna de ellas
es actualizable, es decir no puedo hacer
sentencias UPDATE sobre ellas. Como lo hago para que la
consulta sea actualizable?

muchas gracias

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
18/11/2003 - 09:00 | Informe spam
En los BOL, dentro del tema "CREATE VIEW", viene un apartado en el que
se detallan todas las condiciones que tiene que cumplir una vista para que
sea actualizable. Échale un vistazo, porque seguro que te enseñará más cosas
de las que te podríamos comentar aquí



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Racsus" escribió en el mensaje
news:099f01c3ada7$c5d414a0$
hOLA

Quiero hacer una consulta basada en 3 tablas
relacionadas. La cuestión es que quiero
que la consulta que haga pueda ser actualizable, es decir,
que despues de hacerla y guardar pueda
hacer INSERTS Y UPDATES basados en esa consulta.

la datos de las 3 tablas son los siguientes:

tabla1 ->[USUARIOS] -> IDUSUARIO(c), IDPERFIL, NOMBRE
tabla2 ->[PERFILES] -> IDPERFIL(c), IDMODULO(c),
DESCRIPCION
tabla3 ->[MODULOS] -> IDMODULO(c), IDPERFIL(c), EJECUTAR,
MODIFICA,...

Y las relaciones son las siguientes:

[USUARIOS].IDPERFIL -> [PERFILES].IDPERFIL
[PERFILES].IDPERFIL, [PERFILES].IDMODULO ->
[MODULOS].IDMODULO, [MODULOS].IDPERFIL

He probado hacer un parde consultas, pero ninguna de ellas
es actualizable, es decir no puedo hacer
sentencias UPDATE sobre ellas. Como lo hago para que la
consulta sea actualizable?

muchas gracias
Respuesta Responder a este mensaje
#2 Racsus
18/11/2003 - 09:21 | Informe spam
Me podrias ayudar un poco mas. La ayuda de mi SQL Server
esta en inglés y no acabo de encontrar dichas condiciones.

gracias


En los BOL, dentro del tema "CREATE VIEW", viene un


apartado en el que
se detallan todas las condiciones que tiene que cumplir


una vista para que
sea actualizable. Échale un vistazo, porque seguro que te


enseñará más cosas
de las que te podríamos comentar aquí



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Racsus" escribió


en el mensaje
news:099f01c3ada7$c5d414a0$
hOLA

Quiero hacer una consulta basada en 3 tablas
relacionadas. La cuestión es que quiero
que la consulta que haga pueda ser actualizable, es decir,
que despues de hacerla y guardar pueda
hacer INSERTS Y UPDATES basados en esa consulta.

la datos de las 3 tablas son los siguientes:

tabla1 ->[USUARIOS] -> IDUSUARIO(c), IDPERFIL, NOMBRE
tabla2 ->[PERFILES] -> IDPERFIL(c), IDMODULO(c),
DESCRIPCION
tabla3 ->[MODULOS] -> IDMODULO(c), IDPERFIL(c), EJECUTAR,
MODIFICA,...

Y las relaciones son las siguientes:

[USUARIOS].IDPERFIL -> [PERFILES].IDPERFIL
[PERFILES].IDPERFIL, [PERFILES].IDMODULO ->
[MODULOS].IDMODULO, [MODULOS].IDPERFIL

He probado hacer un parde consultas, pero ninguna de ellas
es actualizable, es decir no puedo hacer
sentencias UPDATE sobre ellas. Como lo hago para que la
consulta sea actualizable?

muchas gracias


.

Respuesta Responder a este mensaje
#3 Rubén Vigón
18/11/2003 - 10:47 | Informe spam
[...] Vistas actualizables
Microsoft SQL Server 2000 mejora la clase de vistas actualizables de dos maneras:
Desencadenadores INSTEAD OF: se pueden crear desencadenadores INSTEAD OF en una vista para que
sea actualizable. El desencadenador INSTEAD OF se ejecuta en lugar de la instrucción de modificación
de datos donde se define el desencadenador. Este desencadenador permite al usuario especificar el
conjunto de acciones que hay que realizar para procesar la instrucción de modificación de datos. Por
lo tanto, si existe un desencadenador INSTEAD OF para una vista en una instrucción de modificación
de datos determinada (INSERT, UPDATE o DELETE), la vista correspondiente se puede actualizar
mediante esa instrucción
Vistas con particiones: Si la vista es del tipo denominado 'vista con particiones', se puede
actualizar con determinadas restricciones. Las vistas con particiones y su actualización se tratarán
más adelante en este tema.
Si es necesario, SQL Server puede distinguir Local Partitioned Views como las vistas en las que
todas las tablas participantes y la vista se encuentran en el mismo SQL Server, y Distributed
Partitioned Views como las vistas en las que al menos una de las tablas de la vista reside en otro
servidor (remoto).
Si una vista no tiene desencadenadores INSTEAD OF, o si no es una vista con particiones, sólo se
puede actualizar si se cumplen las siguientes condiciones:
El argumento select_statement no tiene funciones de agregado en la lista de selección y no
contiene las cláusulas TOP, GROUP BY, UNION (a menos que la vista tenga particiones, como se
describe más adelante en este capítulo) o DISTINCT. Las funciones de agregado se pueden utilizar en
una subconsulta en la cláusula FROM, siempre y cuando los valores devueltos por las funciones no se
modifiquen. Para obtener más información, consulte Funciones agregadas
El argumento instrucciónSelección no tiene columnas derivadas en la lista de selección. Las
columnas derivadas son columnas de conjunto de resultados formadas por cualquier elemento que no sea
una expresión de columna simple, tal como el uso de funciones u operadores de adición y sustracción.
La cláusula FROM de select_statement hace referencia al menos a una tabla. select_statement debe
tener más de una expresión no tabular, es decir, expresiones que no provienen de una tabla. Por
ejemplo, esta vista no se puede actualizar:
CREATE VIEW NoTable AS
SELECT GETDATE() AS CurrentDate,
@@LANGUAGE AS CurrentLanguage,
CURRENT_USER AS CurrentUser
Las instrucciones INSERT, UPDATE y DELETE también deben cumplir determinados requisitos para
poder hacer referencia a una vista actualizable, como se indica en las condiciones anteriores. Las
instrucciones UPDATE e INSERT sólo pueden hacer referencia a una vista si ésta es actualizable y la
instrucción UPDATE o INSERT está escrita de forma que sólo modifique los datos de una de las tablas
base a la que se hace referencia en la cláusula FROM de la vista. Una instrucción DELETE sólo puede
hacer referencia a una vista actualizable si la vista hace referencia exactamente a una tabla en su
cláusula FROM.

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
Respuesta Responder a este mensaje
#4 Carlos Sacristan
18/11/2003 - 13:13 | Informe spam
Te recomiendo entonces descargártelos en español desde
http://www.microsoft.com/sql/



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Racsus" escribió en el mensaje
news:037501c3adad$01ee5590$
Me podrias ayudar un poco mas. La ayuda de mi SQL Server
esta en inglés y no acabo de encontrar dichas condiciones.

gracias


En los BOL, dentro del tema "CREATE VIEW", viene un


apartado en el que
se detallan todas las condiciones que tiene que cumplir


una vista para que
sea actualizable. Échale un vistazo, porque seguro que te


enseñará más cosas
de las que te podríamos comentar aquí



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Racsus" escribió


en el mensaje
news:099f01c3ada7$c5d414a0$
hOLA

Quiero hacer una consulta basada en 3 tablas
relacionadas. La cuestión es que quiero
que la consulta que haga pueda ser actualizable, es decir,
que despues de hacerla y guardar pueda
hacer INSERTS Y UPDATES basados en esa consulta.

la datos de las 3 tablas son los siguientes:

tabla1 ->[USUARIOS] -> IDUSUARIO(c), IDPERFIL, NOMBRE
tabla2 ->[PERFILES] -> IDPERFIL(c), IDMODULO(c),
DESCRIPCION
tabla3 ->[MODULOS] -> IDMODULO(c), IDPERFIL(c), EJECUTAR,
MODIFICA,...

Y las relaciones son las siguientes:

[USUARIOS].IDPERFIL -> [PERFILES].IDPERFIL
[PERFILES].IDPERFIL, [PERFILES].IDMODULO ->
[MODULOS].IDMODULO, [MODULOS].IDPERFIL

He probado hacer un parde consultas, pero ninguna de ellas
es actualizable, es decir no puedo hacer
sentencias UPDATE sobre ellas. Como lo hago para que la
consulta sea actualizable?

muchas gracias


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida