Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Concepto de tablas estáticas

Estas en el tema de Concepto de tablas estáticas en el foro de Oracle en Foros del Web. Hola. Una pregunta sobre ORACLE. ¿Existe el concepto de crear una tabla y después de insertar sus datos bloquearla tabla para que no se puedan ...
  #1 (permalink)  
Antiguo 19/01/2010, 16:44
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 18 años, 6 meses
Puntos: 14
Concepto de tablas estáticas

Hola. Una pregunta sobre ORACLE. ¿Existe el concepto de crear una tabla y después de insertar sus datos bloquearla tabla para que no se puedan realizar operaciones de inserción, consulta y borrado.

Se me ocurre la idea de poenr disparadores que cancelen esas operaciones, perosi existe alguna forma de indicar eso supongo que será mejor (por temas de índices, optimización, etc)

El motivo es que quiero representar un DOMINIO DE VALORES.


Muchas gracias
__________________
No hay cuerda desafinada sino músico progresivo
  #2 (permalink)  
Antiguo 19/01/2010, 17:54
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Concepto de tablas estáticas

Creo que puedes conseguirlo con lock table.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 20/01/2010, 04:42
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 18 años, 6 meses
Puntos: 14
Respuesta: Concepto de tablas estáticas

Gracias por la respuesta. Estoy viendo la documentación aqui:
http://ora.u440.com/dml/lock%20table.html

y he probado el siguiente ejemeplo:

Código:
INSERT INTO tipoEstadoPedido VALUES ('Prueba 1');

LOCK TABLE 
   TipoValoracion, tipoEstadoPedido IN EXCLUSIVE MODE;

INSERT INTO tipoEstadoPedido VALUES ('Prueba 2');

SELECT * FROM tipoEstadoPedido ;
Pero realizar la inserción de Prueba_2 y además me deja consultarlo. ¿Es así como se usa, o estoy perdiendome algo?


Estoy usando la versión de ORACLE Lite (creo que se llama, es una versión reducida)


Gracias de nuevo
__________________
No hay cuerda desafinada sino músico progresivo
  #4 (permalink)  
Antiguo 20/01/2010, 07:48
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Concepto de tablas estáticas

Corrijanme si estoy mal, pero creo que el bloqueo entra a jugar su papel en el momento en que se ejecute cierta transacción.
Es decir, al momento de ejecutar un store procedure que actualice una serie de registros y este mismo tarde 30 segundos (Por ejemplo) la tabla estará bloqueada para evitar borrados, actualizaciones, inserciones o cualquier operación DML.

Por lo menos eso pasa en postgresql y la sintaxis es casi igual.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 20/01/2010, 13:25
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 5 meses
Puntos: 43
Respuesta: Concepto de tablas estáticas

Cita:
Iniciado por Smolky Ver Mensaje
Gracias por la respuesta. Estoy viendo la documentación aqui:
http://ora.u440.com/dml/lock%20table.html

y he probado el siguiente ejemeplo:

Código:
INSERT INTO tipoEstadoPedido VALUES ('Prueba 1');

LOCK TABLE 
   TipoValoracion, tipoEstadoPedido IN EXCLUSIVE MODE;

INSERT INTO tipoEstadoPedido VALUES ('Prueba 2');

SELECT * FROM tipoEstadoPedido ;
Pero realizar la inserción de Prueba_2 y además me deja consultarlo. ¿Es así como se usa, o estoy perdiendome algo?


Estoy usando la versión de ORACLE Lite (creo que se llama, es una versión reducida)


Gracias de nuevo
Es así, pero no tienes el concepto del todo claro. Al hacer el LOCK TABLE IN EXCLUSIVE MODE, bloqueas todas las operaciones sobre esa tabla a todo el mundo EXCEPTO A TI. Durante ese bloqueo tu puedes hacer lo que te de la gana sobre esa tabla en ESA MISMA SESION.

En el momento en que hagas COMMIT, ROLLBACK o cierres esa sesion, el bloqueo desaparece.

Si se sabe utilizar es muy util, pero si lo usas mal puedes tener muchos problemas.

Cita:
Iniciado por huesos52 Ver Mensaje
Corrijanme si estoy mal, pero creo que el bloqueo entra a jugar su papel en el momento en que se ejecute cierta transacción.
Es decir, al momento de ejecutar un store procedure que actualice una serie de registros y este mismo tarde 30 segundos (Por ejemplo) la tabla estará bloqueada para evitar borrados, actualizaciones, inserciones o cualquier operación DML.

Por lo menos eso pasa en postgresql y la sintaxis es casi igual.

saludos
El bloqueo del que hablas creo que se produce a nivel de registro, es decir que si actualizas 30 registros, se bloquean esos 30 registros, con lo que los deletes o updates que afectan a otros registros no se ven bloqueados. Obviamente los inserts se hacen sin problemas..
  #6 (permalink)  
Antiguo 20/01/2010, 13:39
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Concepto de tablas estáticas

Que interesante.

Excelente explicación. Con esto asumo que dependiendo del lock_mode
Cita:
Lock_mode is one of:

ROW SHARE
ROW EXCLUSIVE
SHARE UPDATE
SHARE
SHARE ROW EXCLUSIVE
EXCLUSIVE.
tomado de: http://www.techonthenet.com/oracle/t...lock_table.php

Se bloquea o toda la tabla, o los registros afectados, o solo actualizaciones etc.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 20/01/2010, 16:46
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 18 años, 6 meses
Puntos: 14
Respuesta: Concepto de tablas estáticas

Muchas gracias a todos. Creo que ya está el concepto un poco más claro.
__________________
No hay cuerda desafinada sino músico progresivo

Etiquetas: concepto, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:01.