Está en la página 1de 10

Materia:

Administración de Base de Datos

Trabajo
Transacciones y Roles de Usuarios en distintos SMBD

TRANSACCIÓN SQL
Una transacción es un conjunto de operaciones que van a ser tratadas como una única
unidad. Estas transacciones deben cumplir 4 propiedades fundamentales comúnmente
conocidas como ACID (atomicidad, coherencia, asilamiento y durabilidad).
La transacción más simple en SQL Server es una única sentencia SQL. Por ejemplo, una
sentencia como esta:
UPDATE Products SET UnitPrice=20 WHERE ProductName ='Chai'
Es una transacción. (Como siempre ejemplos de Northwind) Esta es una transacción
'autocommit', una transacción autocompletada.
Cuando enviamos esta sentencia al SQL Server se escribe en el fichero de transacciones
lo que va a ocurrir y a continuación realiza los cambios necesarios en la base de datos. Si
hay algún tipo de problema al hacer esta operación el SQL Server puede leer en el fichero
de transacciones lo que se estaba haciendo y si es necesario puede devolver la base de
datos al estado en el que se encontraba antes de recibir la sentencia.
Por supuesto este tipo de transacciones no requieren de nuestra intervención puesto que
el sistema se encarga de todo. Sin embargo, si hay que realizar varias operaciones y
queremos que sean tratadas como una unidad tenemos que crear esas transacciones de
manera explícita.
TRANSACCIÓN MYSQL
El servidor de bases de datos MySQL soporta distintos tipos de tablas, tales como ISAM,
MyISAM, InnoDB y BDB (Berkeley Database). De éstos, InnoDB es el tipo de tabla más
importante (después del tipo predeterminado, MyISAM), y merece una atención especial.
Los pasos para usar transacciones en MySQL son:
 Iniciar una transacción con el uso de la sentencia BEGIN.
 Actualizar, insertar o eliminar registros en la base de datos.
 Si se quieren los cambios a la base de datos, completar la transacción con el uso
de la sentencia COMMIT. Únicamente cuando se procesa un COMMIT los cambios
hechos por las consultas serán permanentes.
 Si sucede algún problema, podemos hacer uso de la sentencia ROLLBACK para
cancelar los cambios que han sido realizados por las consultas que han sido
ejecutadas hasta el momento.
TRANSACCIÓN JAVA

La API de transacciones Java (JTA) tiene soporte para transacciones complejas.


También proporciona soporte para desasociar transacciones de objetos Connection.

Al igual que JDBC se ha diseñado a partir de las especificaciones Object Database


Connectivity (ODBC) y X/Open Call Level Interface (CLI), JTA se ha diseñado a
partir de la especificación X/Open Extended Architecture (XA). JTA y JDBC
funcionan conjuntamente para desasociar transacciones a partir de objetos
Connection.

El hecho de desasociar transacciones de objetos Connection permite que una sola


conexión trabaje en varias transacciones simultáneamente. A la inversa, permite
que varias conexiones trabajen en una sola transacción.

TRANSACCION MARIADB

START TRANSACTION [transaction_property [, transaction_property] ...] | COMENZAR


[TRABAJO]
COMPROMISO [TRABAJO] [Y [NO] CADENA] [[NO] LIBERACIÓN]
ROLLBACK [TRABAJO] [Y [NO] CADENA] [[NO] LIBERACIÓN]
SET autocommit = {0 | 1}
transaction_property:
CON UN FOTO CONSISTENTE
| LEER ESCRIBIR
| SOLO LECTURA

Descripción

La declaración START TRANSACTION o BEGIN comienza una nueva transacción.

COMMIT compromete la transacción actual, haciendo sus cambios permanentes.

ROLLBACK revierte la transacción actual, cancelando sus cambios.

La instrucción SET autocommit desactiva o habilita el modo predeterminado de


autocommit para la sesión actual.

START TRANSACTION y SET autocommit = 1 comprometen implícitamente la


transacción actual, si la hubiera.

La WORK palabra clave opcional es compatible con COMMIT y ROLLBACK, al igual que
las cláusulas CHAIN y RELEASE.
TRANSACCIÓN ACCESS

Iniciar una nueva transacción.


BEGIN TRANSACTION

Finalizar una transacción confirmando todo el trabajo realizado durante la


transacción.

COMMIT [TRANSACCIÓN | TRABAJO]

Finalizar una transacción revirtiendo todo el trabajo realizado durante la transacción.

ROLLBACK [TRANSACCIÓN | TRABAJO]

Observaciones
Las transacciones no se inician automáticamente. Para iniciar una transacción, debe
hacerlo explícitamente con BEGIN TRANSACTION.

Las transacciones se pueden anidar hasta cinco niveles. Para iniciar una
transacción anidada, use BEGIN TRANSACTION en el contexto de una transacción
existente.

No se admiten transacciones para tablas vinculadas.

TRANSACCIÓN POSTRESQL

En PostgreSQL, una transacción se indica encerrando las órdenes SQL de la


transacción entre las órdenes BEGIN y COMMIT. Entonces la transacción bancaria
del ejemplo de arriba se vería así:

BEGIN;
UPDATE cuentas SET balance = balance - 100.00 WHERE nombre = 'Alicia';
-- etc etc
COMMIT;
Si en medio de una transacción se decide que ya no se quiere registrar los cambios
(tal vez el balance de Alicia se volvió negativo en algún momento, por ejemplo), se
puede recurrir a la orden ROLLBACK en lugar de COMMIT y todas las
actualizaciones hasta ese punto quedarían canceladas.
TRANSACCION INFORMIX

Utilice la declaración COMMIT WORK para confirmar todas las modificaciones


realizadas en la base de datos desde el comienzo de una transacción.

Usar COMMIT WORK solo al final de una operación de múltiples estados en una
base de datos con registro de transacciones, cuando esté seguro de que desea
mantener todos los cambios realizados en la base de datos desde el comienzo de
una transacción.

La instrucción COMMIT WORK libera todos los bloqueos de filas y tablas.

Sintáxis:

COMMIT WORK;

TRANSACCIÓN DB2

Prácticas de codificación recomendadas: codifique una instrucción COMMIT o


ROLLBACK explícita al final de un proceso de solicitud. Se realizará una operación
implícita de confirmación o retrotracción al final de un proceso de aplicación en
función del entorno de la aplicación. Por lo tanto, una aplicación portátil debe
ejecutar explícitamente una instrucción COMMIT o ROLLBACK antes de que finalice
la ejecución en aquellos entornos en los que se permite COMMIT o ROLLBACK
explícito.

Efecto de COMPROMISO: se liberan todos los puntos de salvaguarda establecidos


en la unidad de recuperación y se confirman todos los cambios para las siguientes
declaraciones que se ejecutan durante la unidad de recuperación

Esta declaración se puede incrustar en un programa de aplicación o emitir


interactivamente. Es una sentencia ejecutable que puede prepararse
dinámicamente. No se puede utilizar en el entorno IMS ™ o CICS®.

Sintáxis:

COMMIT WORK;
TRANSACCIÓN SYSBASE

Rollback
Descripción
Restaura una transacción definida por el usuario al punto de salvaguarda nombrado
en la transacción o al principio de la transacción.

Sintaxis
rollback [tran | transaction | work]
[transaction_name | savepoint_name]
Parameters
tran | transaction |
transaction_name
savepoint_name
POSTRESQL

El manejo de roles en PostgreSQL permite diferentes configuraciones, entre ellas


estan:

 SUPERUSER/NOSUPERUSER. Super usuario, privilegios para crear bases de


datos y usuarios.
 CREATEDB/NOCREATEDB. Permite crear bases de datos.
 CREATEROLE/NOCREATEROLE. Permite crear roles.
 CREATEUSER/NOCREATEUSER. Permite crear usuarios.
 LOGIN/NOLOGIN. Este atributo hace la diferencia entre un rol y usuario. Ya
que el usuario tiene permisos para acceder a la base de datos a traves de un
cliente.
 PASSWORD. Permite alterar la contraseña.
 VALID UNTIL. Expiración de usuarios.

MYSQL
Para poder establecer permisos, las siguientes sentencias deben de ejecutarse utilizando
el usuario root.
Si queremos que el nuevo usuario tenga permisos de administrador (Todos los permisos),
debemos de ejecutar la siguiente sentencia.
GRANT ALL PRIVILEGES ON *.* TO 'nombre_usuario'@'localhost';
Los asteriscos indican que los permisos serán asignados a todas las bases de datos y a
todas las tablas (primer asteriscos bases de datos, segundo asterisco tablas).
Si queremos asignar permisos para ciertas acciones, la sentencia quedaría de la siguiente
manera. Reemplazamos ALL PRIVILEGES y colocamos las acciones que queremos
asignar.
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP
-> ON XXXXXX.*
-> TO 'nombre_usuario'@'localhost';
En esta ocasión estamos indicando que el nuevo usuario podrá consultar, crear, actualizar
y eliminar registros, así cómo podrá crear o eliminar elementos (tablas, índices, columnas,
funciones, stores, etc ...)
Todos estos permisos serán válidos únicamente en la base de datos y se aplicarán a
todas las tablas.
Si queremos asignar permisos únicamente a una tabla, reemplazamos el asteriscos por el
nombre de la tabla.
Una vez hayamos finalizado con los permisos, el último paso será refrescarlos.
FLUSH PRIVILEGES;
MARIA DB
Para sólo permitir el acceso local desde el propio servidor (localhost). Esta será la
configuración más segura y más habitual que usaremos para una aplicación web:
mysql> GRANT USAGE ON *.* TO 'miusuario'@localhost IDENTIFIED BY 'mipassword';
Para permitir el acceso desde cualquier otra máquina que tenga acceso al servidor
MySQL desde la red:
mysql> GRANT USAGE ON *.* TO 'miusuario'@'%' IDENTIFIED BY 'mipassword';
4. Conceder todos los privilegios sobre la base de datos al usuario
mysql> GRANT ALL privileges ON `mibd`.* TO 'miusuario'@localhost;
Al igual que en punto anterior, si queremos que el usuario pueda trabajar con la base de
datos desde cualquier ubicación tendremos que sustituir localhost por ‘%’.
5. Aplicar los cambios realizados
Para que sean efectivos los nuevos permisos que hemos asignado debemos finalizar con
el siguiente comando:
mysql> FLUSH PRIVILEGES;

SQL
Especifica el objeto en el que se va a conceder el permiso
ON [ OBJECT :: ] [ schema_name ] . object_name
Especifica la entidad de seguridad para la que se concede el permiso.
TO <database_principal>
Indica que la entidad de seguridad también podrá conceder el permiso especificado a
otras entidades de seguridad.
WITH GRANT OPTION
Especifica una entidad de seguridad de la que la entidad de seguridad que ejecuta esta
consulta deriva su derecho de conceder el permiso.
AS <database_principal>
Especifica un usuario de base de datos.
Database_user
Especifica un rol de base de datos.
Database_role
Especifica un rol de aplicación.
Application_role
Especifica un usuario de base de datos asignado a un usuario de Windows.
Database_user_mapped_to_Windows_User
Especifica un usuario de base de datos asignado a un grupo de Windows.
Database_user_mapped_to_Windows_Group
Especifica un usuario de base de datos asignado a un certificado.
Database_user_mapped_to_certificate
Especifica un usuario de base de datos asignado a una clave asimétrica.
Database_user_mapped_to_asymmetric_key
Especifica un usuario de base de datos sin entidad de seguridad de servidor
correspondiente.
Database_user_with_no_login

ORACLE
Para ver los roles del usuario conectado en ese momento:
select username, granted_role
from user_role_privs;
Para ver los roles asignado a un rol:
select role, granted_role
from role_role_privs;
Para ver los roles definidos en la base de datos:
select role from dba_roles;
Permisos para acceder a la base de datos (permiso de sistema):

GRANT CREATE SESSION TO miusuario;


Permisos para usuario de modificación de datos (permiso sobre objeto):

GRANT SELECT, INSERT, UPDATE, DELETE ON T_PEDIDOS TO miusuario;


Permisos de solo lectura para todos:
GRANT SELECT ON T_PEDIDOS TO PUBLIC;
DB2
ALL o ALL PRIVILEGES
Otorga todos los privilegios adecuados, excepto CONTROL, en la tabla base, vista
o apodo llamado en la cláusula ON.
ALTER
Otorga el privilegio para:
 Añadir columnas a una definición de tabla base.
 Crear o descartar una clave primaria o una restricción de unicidad en una tabla
base.
 Crear o descartar una clave foránea en una tabla base.
También es necesario el privilegio REFERENCES en cada columna de la tabla
padre.
CONTROL
Otorga:
 Todos los privilegios adecuados de la lista, es decir:
o ALTER, CONTROL, DELETE, INSERT, INDEX, REFERENCES, SELECT y
UPDATE para tablas base
o CONTROL, DELETE, INSERT, SELECT y UPDATE para vistas
o ALTER, CONTROL, INDEX y REFERENCES para apodos
 DELETE
 Otorga el privilegio para suprimir las filas de la tabla o vista actualizable.
 INSERT
 Otorga el privilegio para insertar filas en la tabla o vista actualizable y para ejecutar
el programa de utilidad IMPORT.
SELECT
Otorga el privilegio para:
 Recupera filas de la tabla o vista.
 Crea vistas en la tabla.
 Ejecuta el programa de utilidad EXPORT en la tabla o vista.
UPDATE
Otorga el privilegio para utilizar la sentencia UPDATE sobre la tabla o vista
actualizable identificada en la cláusula ON.
Si el ID de autorización de la sentencia tiene uno de los siguientes:
 Autorización ACCESSCTRL o SECADM
 Privilegio CONTROL sobre la tabla o vista
 WITH GRANT OPTION
 Permite que los nombres-autorización especificados otorguen (GRANT) los
privilegios a otros.

También podría gustarte