首页 新闻 赞助 找找看

关于创建触发器的问题

0
悬赏园豆:10 [已关闭问题]

现在有两张表,一张是 入库表(ID  int ,name  varchar(20),amount  int),用来记录入库记录,另外一张是库存表(ID  int ,name varchar(20),leaving),用来记录现有的库存情况。现在的问题是我向入库表中添加了一条记录以后,如果在库存表中没有同名的记录,则在库存表中插入一条记录,如果库存表中有同名的记录,则修改这条记录的leaving=leavingt+amount,请问这样的这个触发器应该怎么写呢 ?

天堂口的主页 天堂口 | 小虾三级 | 园豆:514
提问于:2009-08-07 10:04
< >
分享
其他回答(1)
0

不要试图在一个逻辑单元中完成这些!

因为,库存表与入库表是一对关联表,它们是一对多的关系。

我理解你的库存表应当叫“仓库产品账页”,该账页上起码有“产品ID、入库数量、出库数量、库存数量”等等字段。

入库表实际上是产品的入库明细,它的入库数量是累加到仓库产品账页的入库数量上的。

建议: 先建立“产品标准”,再建立“仓库产品账页”,最后建立“仓库产品明细”(入库明细表,实际上是仓库产品明细的一种逻辑形式)。

产品标准、仓库产品账页、仓库产品明细,这三张表,从左至右全是一对多的关系。

就仓库而言,标准做法是首先建立“仓库产品账页”,然后才能谈得上入库、出库等等的事情。

蓝色海洋 | 园豆:245 (菜鸟二级) | 2009-08-07 12:04
思路不错
支持(0) 反对(0) 天堂口 | 园豆:514 (小虾三级) | 2009-08-07 14:25
0

in就是入库表

store就是库存表

例子如下:(在in表右键选trigger)

create TRIGGER ProductIn
   ON  [in]
   AFTER INSERT
AS
BEGIN
    Declare @amount int;
    Declare @Name varchar(20);
    select  @amount=amount,@Name=Name from [in] inserted  

    update store set leaving=leaving+@amount where [name]=@name
 SET NOCOUNT ON;
END

风浪 | 园豆:2996 (老鸟四级) | 2009-08-07 13:56
正确
支持(0) 反对(0) 天堂口 | 园豆:514 (小虾三级) | 2009-08-07 14:24
这种技巧有意义吗? 恐怕是误人子弟吧!
支持(0) 反对(0) 蓝色海洋 | 园豆:245 (菜鸟二级) | 2009-08-07 16:18
@蓝色海洋:为什么?
支持(0) 反对(0) 天堂口 | 园豆:514 (小虾三级) | 2009-08-07 20:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册