现在有两张表,一张是 入库表(ID int ,name varchar(20),amount int),用来记录入库记录,另外一张是库存表(ID int ,name varchar(20),leaving),用来记录现有的库存情况。现在的问题是我向入库表中添加了一条记录以后,如果在库存表中没有同名的记录,则在库存表中插入一条记录,如果库存表中有同名的记录,则修改这条记录的leaving=leavingt+amount,请问这样的这个触发器应该怎么写呢 ?
不要试图在一个逻辑单元中完成这些!
因为,库存表与入库表是一对关联表,它们是一对多的关系。
我理解你的库存表应当叫“仓库产品账页”,该账页上起码有“产品ID、入库数量、出库数量、库存数量”等等字段。
入库表实际上是产品的入库明细,它的入库数量是累加到仓库产品账页的入库数量上的。
建议: 先建立“产品标准”,再建立“仓库产品账页”,最后建立“仓库产品明细”(入库明细表,实际上是仓库产品明细的一种逻辑形式)。
产品标准、仓库产品账页、仓库产品明细,这三张表,从左至右全是一对多的关系。
就仓库而言,标准做法是首先建立“仓库产品账页”,然后才能谈得上入库、出库等等的事情。
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