Mostrando entradas con la etiqueta Informix. Mostrar todas las entradas
Mostrando entradas con la etiqueta Informix. Mostrar todas las entradas

sábado, 23 de agosto de 2014

Comandos en Gestores de Bases de Datos

  • SQL SERVER
Para modificar el nombre de una tabla se ejecuta la siguiente consulta:
EXEC sp_rename 'nom_tabla_antiguo', 'nom_tabla_nueva'
 
Para modificar el nombre de una columna de una tabla, se ejecuta la siguiente consulta:
EXEC sp_rename 'nom_tabla.nom_columna_antigua', 'nom_columna_nueva'
 
Para consultar los nombres de las columnas en una tabla:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME= "Nombre Tabla" 
  • ORACLE 
Para consultar los nombres de las columnas en una tabla:
DESC "Nombre Tabla"
  • INFORMIX
Para consultar los nombres de las columnas en una tabla: 
DESC "Nombre Tabla"

miércoles, 26 de febrero de 2014

Manejo de Secuencias


  • Consultamos la secuencia de una tabla de oracle

long? sequenceOracle = db.GetAutonumeric("sq_nombreTabla_sec", transaction);


  • Cuando el campo ID es autonumérico, y en uno de los ejemplos, se utiliza la variable @@Identity de SQL Server para saber cuál ese el valor de ese campo al añadir un nuevo dato.

long sequence = long.Parse(db.ExecuteScalar("SELECT @@Identity").ToStringValue());

jueves, 28 de febrero de 2013

Configuracion Conexiones Workbench


Para realizar las diferentes configuraciones para el gestor de bases de datos Workbench, realizamos los siguientes pasos dependiendo del motor de bases de datos:

SQL SERVER


  • Para crear una conexión en el Workbench, debemos crear primero una conexión ODBC, donde ingresamos todos los datos correspondientes a la base de datos.
  • Luego en la interface de configuración de las conexiones del Workbench, configuramos la conexión como vemos a continuación:


















Ya con todas estas configuraciones bien realizadas, es muy posible que no existan problemas con la conexión.

ORACLE

[Configuracion]

INFORMIX

[Configuracion]

jueves, 7 de febrero de 2013

Niveles de Aislamiento


A continuación se describen los cuatro posibles niveles de aislamiento basados en bloqueos.

1. READ UNCOMMITTED
Puede recuperar datos modificados pero no confirmados por otras transacciones ( lecturas sucias - dirty reads ). En este nivel se pueden producir todos los efectos secundarios de simultaneidad (lecturas sucias, lecturas no repetibles y lecturas fantasma - ej: entre dos lecturas de un mismo registro en una transacción A, otra transacción B puede modificar dicho registro), pero no hay bloqueos ni versiones de lectura, por lo que se minimiza la sobrecarga. Una operación de lectura (SELECT) no establecerá bloqueos compartidos (shared locks) sobre los datos que está leyendo, por lo que no será bloqueada por otra transacción que tenga establecido un bloqueo exclusivo por motivo de una operación de escritura. Este nivel de aislamiento ofrece grandes beneficios de rendimiento, pero sólo deberemos utilizarlo en aquellos casos en que la ocurrencia de lecturas sucias (dirty reads) no sea un problema.

2. READ COMMITTED 
Permite que entre dos lecturas de un mismo registro en una transacción A, otra transacción B pueda modificar dicho registro, obteniendose diferentes resultados de la misma lectura. Evita las lecturas sucias (dirty reads), pero por el contrario, permite lecturas no repetibles. Es la opción por defecto en SQL Server 2000 y SQL Server 2005 . Con este nivel de aislamiento, una operación de lectura (SELECT) establecerá bloqueos compartidos (shared locks) sobre los datos que está leyendo . Sin embargo, dichos bloqueos compartidos finalizarán junto con la propia operación de lectura, de tal modo que entre dos lecturas cabe la posibilidad de que otra transacción realice una operación de escritura (ej: UPDATE), en cuyo caso, la segunda lectura obtendrá datos distintos a la primera lectura (lecturas no repetibles).

3. REPEATABLE READ 
Evita que entre dos lecturas de un mismo registro en una transacción A, otra transacción B pueda modificar dicho registro, con el efecto de que en la segunda lectura de la transacción A se obtuviera un dato diferente. De este modo, ambas lecturas serían iguales (lecturas repetidas). Para ello, una operación de lectura (SELECT) establecerá bloqueos compartidos (shared locks) sobre los datos que está leyendo, y los mantendrá hasta el final de la transacción , garantizando así que no se produce lecturas no repetibles (non repeatable reads) . Mayor consistencia en la transacción, mediante mayores recursos y bloqueos ( se evitan los problemas de las lecturas sucias y de las lecturas no repetibles , pagando el precio de necesidad de mayores recursos). Sin embargo, este modo de aislamiento no evita las lecturas fantasma , es decir, una transacción podría ejecutar una consulta sobre un rango de filas (ej: 100 filas) y de forma simultánea otra transacción podría realizar un inserción de una o varias filas sobre el mismo rango.

4. SERIALIZABLE 
Garantiza que una transacción recuperará exactamente los mismos datos cada vez que repita una operación de lectura (es decir, la misma sentencia SELECT con la misma cláusula WHERE devolverá el mismo número de filas, luego no se podrán insertar filas nuevas en el rango cubierto por la WHERE, etc. - se evitarán las lecturas fantasma ), aunque para ello aplicará un nivel de bloqueo que puede afectar a los demás usuarios en los sistemas multiusuario (realizará un bloqueo de un rango de índice - conforme a la cláusula WHERE - y si no es posible bloqueará toda la tabla). Evita los problemas de las lecturas sucias (dirty reads), de las lecturas no repetibles (non repeatable reads), y de las lecturas fantasma (phantom reads).

Saber más: Niveles de Aislamiento y bloqueos

martes, 2 de octubre de 2012

Seleccionar un rango de datos

INFORMIX
En informix para obtener los primeros 10 registros de una consulta, debemos usar FIRST.
Ejemplo: Select FIRST 10 columna1, columna2 from facturas.

SQL Server
En SQL el Top
Ejemplo: Select TOP(10 ) columna1, columna2 from facturas.

ORACLE
En Oracle es rownum.
Ejemplo: Select * from nomTabla where rownum <= 1

lunes, 23 de julio de 2012

Fechas en BD Informix

Para insertar una fecha en una consulta, se debe hacer de la siguiente forma como se ve en este ejemplo:
TO_DATE ('2012-03-01 14:28:00' ,'%Y-%m-%d %H:%M:%S' )

insert into hiepiact (acthis,actnum,acthex,actfen) 
values (708,'URGE',758,1,null,TO_DATE ('2012-03-01 14:28:00' ,'%Y-%m-%d %H:%M:%S' ))
Esto porque informix acepta solo el formato 'YYYY-MM-DD HH:MM:SS'.