-----一个简单的触发器问题-------
CREATE trigger t_updateStoLoc on symix_tbl_PO
for update
as
begin
update Shelf_Table
set Shelf_Table.NewSto = symix_tbl_PO.sto,Shelf_Table.NewLoc = symix_tbl_PO.Loc
from inserted symix_tbl_PO
where Shelf_Table.MaterielNo=symix_tbl_PO.MaterielNo and Shelf_Table.LotNo=symix_tbl_PO.LotNo and Shelf_Table.ShelfType = 0
end
上面的触发器要实现的是,
当symix_tbl_PO中的sto和Loc更新时即(update symix_tbl_PO set sto= 'aaa ',Loc= 'bbb 'where id=100),
Shelf_Table的NewSto和NewLoc也同时更新,
条件是 Shelf_Table.MaterielNo=symix_tbl_PO.MaterielNo and Shelf_Table.LotNo=symix_tbl_PO.LotNo and Shelf_Table.ShelfType = 0
问题:写好了上面这个触发器,检查语法显示成功
但是却一直是编辑状态(就是显示一支笔在那里)。
正常可以用的 应该是一个绿色的+号啊!现在这个触发器一直不起作用,
请问怎样才能使这个触发器正常工作呢?触发器哪里有错吗?!!!
------解决方案--------------------LZ的触发条件好象都没有...
------解决方案--------------------问题:写好了上面这个触发器,检查语法显示成功
但是却一直是编辑状态(就是显示一支笔在那里)。
___________________________________________________
一支笔在那里表示这个触发器是更新触发器,即是由update语句触发的,
绿色加号的触发器是insert触发器,是由insert语句触发的,
另外:红色叉号是delete语句触发器
CREATE trigger t_updateStoLoc on symix_tbl_PO
for update
楼主定义的触发器不就是update语句触发的么?
触发器不起做用,楼主应该另找原因
------解决方案--------------------CREATE trigger t_updateStoLoc on symix_tbl_PO
for update
as
begin
update Shelf_Table
set NewSto = t.sto,NewLoc = t.Loc
from inserted t
where MaterielNo=t.MaterielNo and LotNo=t.LotNo and ShelfType = 0
end
---这样试试
------解决方案--------------------create table t_test
(
a int ,
b int ,
c int
)
insert t_test(a,b,c) values(4,4,5)
create trigger t_t on t_test
for update
as
begin
if update (b)
update t_test set c=t2.b
from t_test t1 inner join inserted t2 on t1.a=t2.a
end
update t_test set b=7
where a=4
drop table t_test
------解决方案--------------------inserted symix_tbl_PO不要把inserted表的另名和实表名一样