进销存求解(0分)

  • 主题发起人 主题发起人 topdelphi
  • 开始时间 开始时间
T

topdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
如何做到进销存三个表,在进货表里增加完一条记录后,
自动将记录插入存货表里,在销售表里删除一条记录后,
自动在存货表里删除这一条记录,请问这个触 发器如何写啊。
 
你用:事务吧。
在事务中。同时,操作入库表和库存表。
就可以达到你的目的了。
 
请问先生有没有具体的例子呢,请问具体实现的方法的什么的啊
 
在进货表创建一插入后触发器
在销售表创建一删除后触发器 就可
写法可以参考一些数据库操作资料
 
-TRIGGER FOR INSERT
IF EXISTS (SELECT name from sysobjects
WHERE type = ‘TR’ and name = ‘ tr_buy_insert’)
DROP TRIGGER tr_buy_insert

CREATE TRIGGER tr_buy_insert
ON tab_buy FOR INSERT
AS
IF EXISTS (SELECT * FROM inserted)
BEGIN
INSERT tab_stock SELECT id, name, numer, FROM inserted
END
-TRIGGER FOR DELETE
IF EXISTS (SELECT name from sysobjects
WHERE type = ‘TR’ and name = ‘ tr_sell_delete’)
DROP TRIGGER tr_sell_delete

CREATE TRIGGER tr_stock_delete
ON tab_stock FOR DELETE
AS
IF EXISTS(SELECT * FROM deleted)
BEGIN
DELETE tab_stock where id IN(SELECT * FROM DELETED)
END
 
先生你这句,IF EXISTS (SELECT name from sysobjects
WHERE type = ‘TR’ and name = ‘ tr_buy_insert’)
DROP TRIGGER tr_buy_insert
是什么意思 啊,为何上面没有指定创建触发器的创建声明,对这个功能起作用吗?
而下面那几条语句就有,
为何啊。
 
if exist(该触发器) 则drop(该触发器)
 
但是这个功能有点变动,因为进货表和出货表和库存表都有数量,在写删除的时候,
要判断出货和库存表是否小于0,如果小于则删除,请问如何修改这条语句啊。谢谢
 
-TRIGGER FOR DELETE
-如果stock表中总数大于sell表中的售出数量,就在stock表中减去该数量
-具体实现或有不同

IF EXISTS (SELECT name from sysobjects
WHERE type = ‘TR’ and name = ‘tr_sell_delete’)
DROP TRIGGER tr_sell_delete


-如果stock表中总数大于sell表中的售出数量,就在stock表中减去该数量
CREATE TRIGGER tr_stock_delete
ON tab_stock FOR DELETE
AS
DECLARE @TOTAL INT -定义一变量
DECLARE @TOBEDELETED INT

SET @TOTAL = (SELECT SUM(number) FROM tab_stock)
SET @TOBEDELETED = (SELECT SUM(number) FROM deleted)

IF @TOTAL >= @TOBEDELETED THEN
IF EXISTS(SELECT * FROM deleted)
DELETE tab_stock where id IN(SELECT id FROM DELETED)
GO
 
后退
顶部