+ -
当前位置:首页 → 问答吧 → 触发器问题

触发器问题

时间:2011-11-17

来源:互联网

create trigger tr_IssueProduct on IssueProduct
for insert
as 
begin
declare @invseriesnr varchar(13)
select @invseriesnr=invseriesnr from inserted
declare @prodnr varchar(30)
select @prodnr=prodnr from inserted

update IssueProduct set qty=ceiling(qty) 
where invseriesnr=@invseriesnr and prodnr=@prodnr and 
end
我写了个触发器,但这个触发器是对所以的插入到这个表的小数都进位, 我想达到只让414-% (414是一个分类,百分号是变动的 )这个分类的小数进位,其它的不进位一样可以插入到这个表,应该如何写!

作者: a544589668   发布时间: 2011-11-17

按你的需求加个限制分类的条件。

作者: AcHerat   发布时间: 2011-11-17

SQL code
create trigger tr_IssueProduct on IssueProduct
for insert
as  
begin
update t set qty=(case when type='414-%' then ceiling(qty) else qty end)
from IssueProduct t
where exists(select 1 from inserted where invseriesnr=t.invseriesnr and prodnr=t.prodnr)
end

作者: qianjin036a   发布时间: 2011-11-17

引用 2 楼 qianjin036a 的回复:
SQL code
create trigger tr_IssueProduct on IssueProduct
for insert
as
begin
update t set qty=(case when type='414-%' then ceiling(qty) else qty end)
from IssueProduct t
where exists(select 1 ……

晴天大大V5

作者: fredrickhu   发布时间: 2011-11-17

SQL code
create trigger tr_IssueProduct on IssueProduct
for insert
as 
begin

update a 
set qty=ceiling(qty) 
FROM INSERTED AS i,IssueProduct AS a
WHERE i.prodnr=a.prodnr AND i.invseriesnr=a.invseriesnr AND a.分類 LIKE '414-%'
end

作者: roy_88   发布时间: 2011-11-17

引用 2 楼 qianjin036a 的回复:
SQL code
create trigger tr_IssueProduct on IssueProduct
for insert
as
begin
update t set qty=(case when type='414-%' then ceiling(qty) else qty end)
from IssueProduct t
where exists(select 1 ……

提示错误207:无效的资料行名称type 把这个改成字段prodnr 这个触发器没起作用 因为414-%是属于prodnr字段的。

作者: a544589668   发布时间: 2011-11-17

试试
SQL code

create trigger tr_IssueProduct on IssueProduct
for insert
as  
begin
declare @invseriesnr varchar(13)
select @invseriesnr=invseriesnr from inserted
declare @prodnr varchar(30)
select @prodnr=prodnr from inserted

update IssueProduct set qty=ceiling(qty)  
where invseriesnr=@invseriesnr and prodnr like '414-%'
end

作者: pengxuan   发布时间: 2011-11-17


CREATE trigger tr_IssueProduct on IssueProduct
for insert
as 
begin
declare @invseriesnr varchar(13)
select @invseriesnr=invseriesnr from inserted
declare @prodnr varchar(30)
select @prodnr=prodnr from inserted

update IssueProduct set qty=(case when prodnr like '414-%' then ceiling(qty) else qty end)
where invseriesnr=@invseriesnr and prodnr=@prodnr 
end
改成这样就可以了。

作者: a544589668   发布时间: 2011-11-17