Poner la primer letra Mayúscula y las demás en minúscula (TRANSACT SQL, MYSQL)

En esta ocasión les mostrare como modificar las oraciones para que la primer letra de una oración comience con Mayúscula y las demás en Minúscula, este es un caso real que me toco resolver en una base de datos de la empresa en que trabajo, la misma trabaja sobre un motor de base de datos MYSQL.

Utilizo MYSQL GUI TOOLS 5.0 – MYSQL QUERY BROWSER

http://dev.mysql.com/downloads/gui-tools/5.0.html

Empecemos:

Cuando hacia un select al campo ‘lastname’ me aparecían los apellidos todos en mayúscula (PEREZ) o todo en minúscula (lopez), los cuales fueron omisiones de los data entry que ingresaron esos datos, en algunos casos los hicieron bien.

Les muestro la consulta:

image

Hice un backup de la base de datos (MYSQL), por las dudas que se rompa algo o haga mal la transacción.

Luego comencé una transacción para si se producía un error haría un roolback y no tendría que levantar nuevamente el backup:image

Luego ejecute la siguiente consulta (NOTA: lastname es el nombre del campo a actualizar!!!, deberían poner el nombre del campo que desean actualizar y cambiar el nombre de la tabla):

UPDATE hr_mysql.hs_job_application SET lastname = CONCAT (UCASE (SUBSTRING(lastname, 1, 1)), LCASE (SUBSTRING( lastname, 2)));

image

Luego nuevamente hago una consulta para ver los apellidos, si fueron modificados y el registro 757 el cual se muestra en la imagen de arriba que estaba minúscula fue modificado correctamente.

image

Por ultimo hacemos un commit a la transacción y listo.

Espero que les haya gustado.

Saludos.

Trigger en Transact SQL (SQL Server 2008) Ejemplo de Insert (DML)

En esta ocasión voy a publicar como crear un Trigger desde cero, para que tengan un pantallazo en general un Trigger es como su nombre lo dice un “desencadenador”, el cual ejecuta una serie de operaciones Transact SQL al producirse una acción en la base de datos, esta acción puede ser cambios a nivel datos (DML – Data Manipulation Language) y a nivel esquema (DDL – Data Definition Language), los cambios a nivel de datos se refieren a INSERT/DELETE/UPDATE que se puedan producir en los datos de la base de datos. Los Triggers se usan generalmente para hacer auditorias sobre las tablas, y para tener un mejor control de las mismas, ya que si los datos son borrados los mismos se pueden recuperar, también se pueden usar para guardar datos de algo en especifico como las compras de un proveedor.

Empezamos con el ejemplo de DML para cuando se produzca una acción de Insert sobre una determinada tabla. Las tablas que guardan estas acciones son dos INSERTED (inserciones) y DELETED (borrados).

Para ello creamos una tabla producto y otra tabla que contendrá todos los productos insertados.

Tabla Productos, “tb_Productos”, tiene los campos idProducto (llave primaria, identidad), nombre, precio.

image

Tabla “tb_Productos_Audit_Insert”, tiene los campos idProducto (clave primaria), nombre, precio, acción (guardara el nombre de la acción producida), fecha_accion (guarda la fecha y hora cuando se produce la acción de insert).

image

Cargo datos en la tabla Productos.

image

Luego creamos el Trigger:

CREATE TRIGGER [dbo]. [tg_Productos_Audit_Insert] //NOMBRE DEL TRIGGER
ON [dbo].[tb_Productos] //ELEGIMOS LA TABLA SOBRE LA CUAL SE REALIZARA
FOR INSERT //ELEGIMOS LA ACCION
AS
DECLARE @now datetime //DECLARO UNA VARIABLE QUE GUARDE LA FECHA Y HORA
DECLARE @accion nvarchar(10) //DECLARO UNA VARIABLE QUE TENDRA EL NOMBRE DE LA ACCION

BEGIN TRY //PONEMOS LA EJECUCION DE LA CONSULTA SQL DENTRO DE UN TRY PARA QUE SI NO SE EJECUTA CORRECTAMENTE HACEMOS UN ROLLBACK DE LA TRANSACCION
SET @now = getdate() //TOMO LA FECHA Y HORA
SET @accion = 'INSERTED' //PONGO EL NOMBRE DE LA ACCION

INSERT INTO [dbo].[tb_Productos_Audit_Insert] //TABLA PARA LA AUDITORIA DEL INSERT
(idProducto, Nombre, Precio, Accion, Fecha_Accion)
SELECT INSERTED.idProducto, INSERTED.Nombre, INSERTED.Precio, @accion, @now
FROM INSERTED // TRAE LOS VALORES DE LA TABLA INSERTED, SI BORRAMOS LOS DATOS LA TABLA VIRTUAL QUE CONTENDRA LOS DATOS BORRADOS ES DELETED
END TRY

BEGIN CATCH
ROLLBACK TRANSACTION //VUELVE ATRAS LOS CAMBIOS

RAISERROR (‘HUBO UN ERROR SOBRE LA INSERCION DE LA TABLA AUDITORA DE PRODUTOS’,20,1)
END CATCH

GO

HACEMOS ALGUNOS INSERT SOBRE LA TABLA PRODUCTOS.

HACEMOS una consulta de SELECT sobre la tabla auditora:

image

Los Triggers se guardan sobre la tabla en donde se utilizara:

image

Espero que les haya gustado, cualquier pregunta consúltenme, mi correo es cristian.ayala08@gmail.com