banco
-- Tabla de Cuentas de Ahorro
CREATE TABLE Cuentas (
ncta CHAR(1) NOT NULL PRIMARY KEY, -- Número de Cuenta
dcta CHAR(15) NOT NULL, -- Descripción de la Cuenta
propietario CHAR(40) NOT NULL, -- Nombre del propietario
fecha DATE NOT NULL -- Fecha de inicio
);
-- Tabla de Movimientos de la Cuenta de Ahorros
CREATE TABLE MovCuentas (
ntran INTEGER NOT NULL, -- Número de Movimiento
ncta CHAR(1) NOT NULL, -- Número de Cuenta
fecha DATE NOT NULL, -- Fecha del Movimiento
impt DECIMAL, -- Si impt > 0 es abono, si impt < 0 es retiro
CHECK (impt <> 0),
FOREIGN KEY (ncta) REFERENCES Cuentas(ncta),
PRIMARY KEY (ntran, ncta)
);
-- Inserción de datos iniciales
INSERT INTO Cuentas VALUES ('A', 'Cuenta A', 'Juan Matias', '2012-01-01');
INSERT INTO Cuentas VALUES ('B', 'Cuenta B', 'Ana Laois', '2011-12-01');
INSERT INTO MovCuentas VALUES (1, 'B', '2012-01-01', 298);
INSERT INTO MovCuentas VALUES (2, 'B', '2012-12-01', -248);
INSERT INTO MovCuentas VALUES (1, 'A', '2012-01-01', 17);
INSERT INTO MovCuentas VALUES (2, 'A', '2012-12-01', 283);
-- Transacción
DECLARE @monto DECIMAL; -- Define el monto
DECLARE @saldo DECIMAL; -- Define el saldo
set @monto = 50
SELECT @saldo = SUM(impt) FROM MovCuentas WHERE ncta = 'A';
IF @saldo >= @monto
BEGIN
INSERT INTO MovCuentas VALUES (3, 'A', '2016-10-31', @monto);
INSERT INTO MovCuentas VALUES (3, 'B', '2016-10-31', -@monto);
end
select ncta, sum(impt) from MovCuentas
group by ncta