Trigger usando if

Hola experto, mira tengo un problema, tengo 2 tablas en sql server 2005, una se llama ventas y la otra productos, en la de productos tengo un campo que se llama existencias de tipo int, lo que quiero hacer es que si llego a realizar una venta el campo de existencias disminuya con respecto a la venta (en caso de que haya suficientes existencias ) y la venta se registre en la tabla ventas y si no que me mande un error para decir que no se puede realizar la venta y ademas que no se registre la venta en la tabla ventas, (esto realizarlo con un trigger)
Sinceramente no tengo idea de como hacerlo te agradecería que me ayudaras
Respuesta
Primero consulta la existencia, hay varias maneras, puedes crear un recordset (abrir la tabla de productos) y ver el stock actual, así decides si se procesa o se aborta
Luego lo restarías del stock
mira este es el codigo que cree pero la verdad no me sale siento que tengo la logica del problema pero no me resulta checalo por favor
create trigger restaExistencia
on ventas
for insert
as
declare @idventa int,@idprod int,@cantidad int,@precio money,@total money,@descripcion varchar(40)
select @idventa=idventa, @idprod=idproducto,@cantidad=cantidad,@precio=precio,@total=total,@descripcion=descripcion
from ventas
declare @idproducto int,@nombre varchar(50),@prec money, @existencia int, @descrip varchar(20),@fechaHora datetime
select @idproducto=idproducto,@nombre=nombre,@prec=precio, @existencia=existencia, @descrip=descripcion,@fechaHora=fecha_hora
from productos
 select @existencia=@existencia-@cantidad
if @existencia>=0
   begin
      update productos set existencia=@existencia
  insert into ventas values(@idventa,@idproducto,@cantidad,@precio,@total,@descripcion)
end
   else    
begin
print 'Se requieren Más productos para realizar la venta'
   end
No logro ver los problemas, pueden ser varias cosas, pero al no tener la base, ¿puede haber errores de conversión y problemas con los formatos de fecha
que error te da
porque no abres el recorset y lo haces por vb?
Si quieres enviame la base o parte de ella
para poder ayudarte mejor
Pero soy experto en access y no tanto en otras bases, tal vez la gente de vb sepan algo más, pregunta también por allá

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas