Documente Academic
Documente Profesional
Documente Cultură
Sistemas
LABORATORIO N 01
TRANSACCIONES EN UNA BASE DE DATOS
3. Reglas de Integridad
Tabla: CLIENTE
o Primary key: CLI_numero, identity (Autogenerado)
o default (0) for CLI_saldo
Tabla: FACTURA
o Primary Key: FAC_numero
o Foreign Key: CLI_numero
o default (0) for FAC_subtotal
o default (0) for FAC_igv
o default (0) for FAC_total
o Check (FAC_tipopago in ('cc', 'chk', 'cash', 'cred') )
o default (cc) for FAC_tipopago
o default (0) for FAC_cantidadpago
o default (0) for FAC_saldo
Tabla: MOVIMIENTOS
Tabla: PRODUCTO
Tabla: VENDEDOR
Tabla: VENTAS
Planteamiento de casos:
use FACTURAS
go
where VEN_nombre=@VEN_nombre
Insert into PRODUCTO
values(@PRO_numero, @PRO_descripcion, @PRO_fechaentrada, @PRO_stock,
@PRO_stockminimo, @PRO_precio, @PRO_descuento, @VEN_numero)
if @@error=0
begin
print 'Producto registrado exitosamente'
commit tran TransacProducto
end
else
begin
print 'Ocurri error al insertar ...'
rollback tran TransacProducto
end
go
--Ejecucin del SP
exec ProductoNew '99-WRE-Q','Llantas radiales 32x14', '18/01/2015',
100.00, 25.00, 97.55, 0.00, 'Juan Perez'
use FACTURAS
go
--Ejecucin del SP
use FACTURAS
go
exec MovimientoNew '10220','18/01/2015', 'venta', 100.00, 'Perez Chavez', 'Daniel'
go
3. Supongamos que el 18 de enero de 2015, se registra la venta a crdito de una unidad del
producto 99-WRE-Q al cliente 1002 por la cantidad de S/. 277.55. Para el caso, se debera
realizar la siguiente transaccin:
use FACTURAS
go
Begin transaction TransacVenta
Insert Into FACTURA
values('10280012', '18/01/2015', 256.99, 20.56, 277.55, 'cred', 0.00, 277.55, 1002)
Update PRODUCTO
set PRO_stock=PRO_stock-1
where PRO_numero='99-WRE-Q'
Update CLIENTE
set CLI_saldo=CLI_saldo+277.55
where CLI_numero=1002
if @@error=0
begin
print 'Transaccin exitosa ...'
commit transaction TransacVenta
end
else
begin
print 'Error en la Transaccin ...'
rollback transaction TransacVenta
end
go
- Hemos agregado una fila para la tabla FACTURA, con el nmero: '10280012', en esa fila, los
valores del atributo derivado se guardaron para el sub total de la factura, el impuesto, el
total de la factura y el saldo de sta.
- La fila VENTA para la factura '10280012' se agreg para reflejar la compra de una unidad del
producto 99-WRE-Q' con precio de S/. 256.99. En esta fila se guardaron los valores del
atributo derivado para la cantidad de la venta.
- La cantidad disponible del producto 99-WRE-Q se redujo en 1.
- El saldo del cliente 1002 se actualiz al agregar S/. 277.55 al saldo existente; su valor inicial
era de S/. 0.00
- Se agreg una nueva fila a la tabla MOVIMIENTOS para reflejar el nuevo nmero de
transaccin de la cuenta 1005.
- Finalmente, utilizamos la clusula commit transaction para confirmar en forma satisfactoria
la transaccin y adems utilizamos la clusula rollback transaction para deshacer las
operaciones realizadas en caso alguna de estas tareas no se llegara a realizar exitosamente.