[英]SQL trigger update and insert
I have three table OUTPUT
, INVENTORY
and PRODUCT
我有三个表
OUTPUT
, INVENTORY
和PRODUCT
Create Table OUTPUT(){
OUTPUTID int indentity, -- output ID
PRODUCTID varchar(10),
QUANTUM int,
}
Create Table INVENTORY(){
INVENTORYID int indentity, -- inventory ID
QUANTUM int,
QUANTUMOUT int, -- quantum out
}
Create Table PRODUCT(){
PRODUCTID varchar(10),
}
I have created the following trigger : 我创建了以下触发器:
create trigger [dbo].[trig_OUTPUT]
on [dbo].[OUTPUT]
after insert,update
as
begin
Set nocount on;
UPDATE INVENTORY
set INVENTORY.QUANTUMOUT = OUT.QUANTUM
from OUTPUT
inner join PRODUCT on OUTPUT.PRODUCTID = PRODUCT.PRODUCTID
inner join INVENTORY on PRODUCT.PRODUCT = INVENTORY.PRODUCT
end
and stored procedure 和存储过程
CREATE procedure [dbo].[spud_addOUTPUT]
@productID varchar(10),
@quantum int
AS
declare @quantumtemp int
set @quantumtemp = (select QUANTUM from INVENTORY where INVENTORY.PRODUCTID = @productID)
if(@quantumtemp> @quantum or ISNULL(@quantumtemp,'0')='0')
begin
INSERT OUTPUT(PRODUCTID,QUANTUM) values(@productID,@quantum)
end
else
begin
print 'do not insert quantum out greater quantum in inventory'
end
However,a stored procedure only works on the first, then I call a stored procedure. 但是,存储过程仅在第一个起作用,然后我调用存储过程。 it didn't update column
QUANTUMOUT
in INVENTORY
它没有更新
INVENTORY
QUANTUMOUT
列
Dont know what logic you are using here but I have fixed the syntactical errors, 不知道您在这里使用什么逻辑,但是我已经修复了语法错误,
Never use sql server key words for your object names, if you do have any objects named any of the key words, use square brackets []
around them always. 切勿使用sql server关键字作为对象名称,如果确实有任何命名为任何关键字的对象,请始终在其周围使用方括号
[]
。
Trigger 触发
create trigger [dbo].[trig_OUTPUT]
on [dbo].[OUTPUT]
after insert,update
as
begin
Set nocount on;
UPDATE INVENTORY
set INVENTORY.QUANTUMOUT = [OUTPUT].QUANTUM --<-- this should be OUTPUT
from [OUTPUT]
inner join PRODUCT on [OUTPUT].PRODUCTID = PRODUCT.PRODUCTID
inner join INVENTORY on PRODUCT.PRODUCT = INVENTORY.PRODUCT
end
Procedure 程序
CREATE procedure [dbo].[spud_addOUTPUT]
@productID varchar(10),
@quantum int
AS
BEGIN
SET NOCOUNT ON;
declare @quantumtemp int
SELECT TOP 1 @quantumtemp = QUANTUM from INVENTORY where PRODUCTID = @productID
if(@quantumtemp> @quantum or ISNULL(@quantumtemp,'0')='0')
begin
INSERT INTO dbo.[OUTPUT](PRODUCTID,QUANTUM)
values(@productID,@quantum)
end
else
begin
print 'do not insert quantum out greater quantum in inventory'
end
END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.