Cita:
Solo permite que se inserte... CREATE TRIGGER id_cliente ON Prestamos FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
declare @monto_aprobado int
select @monto_aprobado = prestamos.monto_aprobado from prestamos
IF (@monto_aprobado > (select limite_credito from cliente, prestamos where cliente.id_cliente = prestamos.id_cliente))
begin
raiserror ('No tiene suficiente crédito para tomar este prestamo.', 16,1)
rollback transaction
end
END
AS
BEGIN
SET NOCOUNT ON
declare @monto_aprobado int
select @monto_aprobado = prestamos.monto_aprobado from prestamos
IF (@monto_aprobado > (select limite_credito from cliente, prestamos where cliente.id_cliente = prestamos.id_cliente))
begin
raiserror ('No tiene suficiente crédito para tomar este prestamo.', 16,1)
rollback transaction
end
END
Cita:
una sola fila. Es decir, el trigger inpide que en el monto aprobado (valor subrayado) sea mayor que el limite de credito de otra tabla cliente, la cual tiene 50000 como valor de limite de credito.insert into prestamos (id_cliente,fecha_solicitud,monto_solicitado,fecha _desembolso,monto_aprobado,balance,tipo_credito,pl azo,dia_pago)
values ('001','01/042011',900,'01/4/2011',500,0,'CONSUMO','3','01/0/2011')
values ('001','01/042011',900,'01/4/2011',500,0,'CONSUMO','3','01/0/2011')
Si en la insercion introduzco un valor menor a los 50 mil, insercion ocurre bien, pero si intento ingresar otra fila con un valor tambien menor a los 50 mil, usando el mismo script para insertar, solo que modificando el valor, me da el siguiente error:
Cita:
Para que el nuevo valor que intento introducir, se logre insertar, tengo que borrar la fila ya insertada en la tabla e intentar de nuevo ingresar el nuevo valor. Ahi se inserta sin ningun problema. El caso es que solo me permite insertar una sola fila en la tabla. Si intento, por ejemplo, cambiando el valor de monto aprobado, poniendolo por encima del limite que le trigger permite, el cual es 50 mil, entonces me da el mismo error, en vez de darme el error que el trigger especifica que debe dar.Mens 512, Nivel 16, Estado 1, Procedimiento id_cliente, Línea 7
La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.
Se terminó la instrucción.
La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.
Se terminó la instrucción.
Pero si borro la fila que ya esta, e intento nuevamente con el valor que excede los 50 mil, ahi si me da el mensaje que el trigger tiene programado para dar.
Si alguien quiere probar, les dejo aqui los datos necesarios:
Cita:
--Poblar la Tabla ClienteCREATE TABLE CLIENTE (
id_cliente nvarchar(100) primary key,
nombre nvarchar (100),
apellido nvarchar (100),
direccion nvarchar (100),
tel_celular nvarchar (100),
tel_casa nvarchar (100),
tel_oficina nvarchar (100),
limite_credito int)
id_cliente nvarchar(100) primary key,
nombre nvarchar (100),
apellido nvarchar (100),
direccion nvarchar (100),
tel_celular nvarchar (100),
tel_casa nvarchar (100),
tel_oficina nvarchar (100),
limite_credito int)
Cita:
--Tabla prestamosinsert into cliente values ('001','Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)
insert into cliente values ('002','Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)
insert into cliente values ('003','Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)
insert into cliente values ('004','Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)
insert into cliente values ('005','Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)
insert into cliente values ('006','Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)
insert into cliente values ('002','Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)
insert into cliente values ('003','Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)
insert into cliente values ('004','Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)
insert into cliente values ('005','Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)
insert into cliente values ('006','Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)
Cita:
--TriggerCREATE TABLE PRESTAMOS (
id_cliente nvarchar(100) FOREIGN KEY REFERENCES cliente (id_cliente),
num_prestamo int IDENTITY PRIMARY KEY,
fecha_solicitud nvarchar (100),
monto_solicitado int,
fecha_desembolso nvarchar (100),
monto_aprobado int,
balance int,
tipo_credito nvarchar (100) check (tipo_credito in ('CONSUMO','COMERCIAL','HIPOTECARIO')),
plazo nvarchar (100),
dia_pago nvarchar (100))
id_cliente nvarchar(100) FOREIGN KEY REFERENCES cliente (id_cliente),
num_prestamo int IDENTITY PRIMARY KEY,
fecha_solicitud nvarchar (100),
monto_solicitado int,
fecha_desembolso nvarchar (100),
monto_aprobado int,
balance int,
tipo_credito nvarchar (100) check (tipo_credito in ('CONSUMO','COMERCIAL','HIPOTECARIO')),
plazo nvarchar (100),
dia_pago nvarchar (100))
Cita:
-- Ingresar filas en la Tabla prestamosCREATE TRIGGER id_cliente ON Prestamos FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
declare @monto_aprobado int
select @monto_aprobado = prestamos.monto_aprobado from prestamos
IF (@monto_aprobado > (select limite_credito from cliente, prestamos where cliente.id_cliente = prestamos.id_cliente))
begin
raiserror ('No tiene suficiente crédito para tomar este prestamo.', 16,1)
rollback transaction
end
END
AS
BEGIN
SET NOCOUNT ON
declare @monto_aprobado int
select @monto_aprobado = prestamos.monto_aprobado from prestamos
IF (@monto_aprobado > (select limite_credito from cliente, prestamos where cliente.id_cliente = prestamos.id_cliente))
begin
raiserror ('No tiene suficiente crédito para tomar este prestamo.', 16,1)
rollback transaction
end
END
Cita:
Gracias por su cooperacion! insert into prestamos (id_cliente,fecha_solicitud,monto_solicitado,fecha _desembolso,monto_aprobado,balance,tipo_credito,pl azo,dia_pago) values ('001','01/042011',900,'01/4/2011',5000,0,'CONSUMO','3','01/0/2011')
insert into prestamos (id_cliente,fecha_solicitud,monto_solicitado,fecha _desembolso,monto_aprobado,balance,tipo_credito,pl azo,dia_pago) values ('002','01042011',900,'01//2011',500,0,'CONSUMO','3','01/02011')
insert into prestamos (id_cliente,fecha_solicitud,monto_solicitado,fecha _desembolso,monto_aprobado,balance,tipo_credito,pl azo,dia_pago) values ('002','01042011',900,'01//2011',500,0,'CONSUMO','3','01/02011')