SQLSERVER触发器求救!!!!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/30 08:43:27
我所写的触发器程序如下:

create trigger war on warning
(
after insert or update on stock
for each row
as begin
if stock.s_amount<medicine.m_lowerlimit then
insert into warning values (1,stock.s_mid,"药品已到最低限度了,请及时进药.",stock.s_amount);
end if;
if stock.s_amount>medicine.m_upperlimit then
insert into warning values (2,stock.s_mid,"药品已到蝗高限度了,请暂缓进药.",stock.s_amount);
end if;
end;
)

提示的错误如下:

服务器: 消息 170,级别 15,状态 1,过程 war,行 2
第 2 行: '(' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,过程 war,行 6
在关键字 'then' 附近有语法错误。
服务器: 消息 128,级别 15,状态 1,过程 war,行 7
在此上下文中不允许使用 's_mid'。此处只允许使用常量、表达式或变量。不允许使用列名。
服务器: 消息 156,级别 15,状态 1,过程 war,行 9
在关键字 'then' 附近有语法错误。
服务器: 消息 128,级别 15,状态 1,过程 war,行 10
在此上下文中不允许使用 's_mid'。此处只允许使用常量、表达式或变量。不允许使用列名。

请高手给解答一下.先谢谢了.
wwjwang 留下QQ,我们QQ讨论好么?

大概这样,你试试看吧
create or replace trigger war
after insert or update on stock
for each row
declare
lowerlimit integer;
upperlimit integer;
begin
select m_lowerlimit,m_upperlimit into lowerlimit,upperlimit from medicine where s_mid = :s_mid;
if :new.s_amount < lowerlimit then
insert into warning values(1,:new.s_mid,"药品已到最低限度了,请及时进药.",:new.s_amount);
end if;
if :new.s_amount>upperlimit then
insert into warning values (2,:new.s_mid,"药品已到蝗高限度了,请暂缓进药.",:new.s_amount);
end if;
end;