首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

ms sql触发器有关问题

2012-03-11 
ms sql触发器问题触发器代码如下:create trigger up_SEOutStock on SEOutStockfor insertasset nocount on

ms sql触发器问题
触发器代码如下:create trigger up_SEOutStock on SEOutStock 
for insert 
as 
set nocount on 
if exists( 
select 1 
from inserted c 
join seoutstockentry d 
on c.finterid=d.finterid 
join ( 
select fitemid,sum(fqty) 库存数量 
from ICInventory 
group by fitemid) e 
on d.fitemid=e.fitemid 
where d.fqty>e.库存数量) 
begin 
declare @s varchar(1000) 
select @s=isnull(@s+",","")+f.fnumber 
from inserted c 
join seoutstockentry d 
on c.finterid=d.finterid 
join ( 
select fitemid,sum(fqty) 库存数量 
from ICInventory 
group by fitemid) e 
on d.fitemid=e.fitemid 
join t_icitem f 
on d.fitemid=f.fitemid 
where d.fqty>e.库存数量 
exec("raiserror(""物料代码为 "+@s+" 超出库存数,单据不允许保存!"",18,1)") 
rollback tran 
end 
set nocount off 
go 
上面触发器语句执行 提示一下错误:
消息 1038,级别 15,状态 3,过程 up_SEOutStock,第 18 行
不能使用空白的对象或列名。如果必要,请使用一个空格。
消息 170,级别 15,状态 1,过程 up_SEOutStock,第 30 行
第 30 行: 'raiserror("物料代码为 ' 附近有语法错误。



[解决办法]
try:

SQL code
create trigger up_SEOutStock on SEOutStock  for insert  as  set nocount on  if exists(  select 1  from inserted c  join seoutstockentry d  on c.finterid=d.finterid  join (  select fitemid,sum(fqty) 库存数量  from ICInventory  group by fitemid) e  on d.fitemid=e.fitemid  where d.fqty>e.库存数量)  begin  declare @s varchar(1000)  select @s=isnull(@s+',','')+f.fnumber  from inserted c  join seoutstockentry d  on c.finterid=d.finterid  join (  select fitemid,sum(fqty) 库存数量  from ICInventory  group by fitemid) e  on d.fitemid=e.fitemid  join t_icitem f  on d.fitemid=f.fitemid  where d.fqty>e.库存数量  exec('raiserror(''物料代码为 '+@s+' 超出库存数,单据不允许保存!'',18,1)')  rollback tran  end  set nocount off  go
[解决办法]
将" 变成' 试试
[解决办法]
SQL code
create trigger up_SEOutStock on SEOutStock  for insert  as  set nocount on  if exists(  select 1  from inserted c  join seoutstockentry d  on c.finterid=d.finterid  join (  select fitemid,sum(fqty) 库存数量  from ICInventory  group by fitemid) e  on d.fitemid=e.fitemid  where d.fqty>e.库存数量)  begin  declare @s varchar(1000)  select @s=isnull(@s+',','')+f.fnumber  from inserted c  join seoutstockentry d  on c.finterid=d.finterid  join (  select fitemid,sum(fqty) 库存数量  from ICInventory  group by fitemid) e  on d.fitemid=e.fitemid  join t_icitem f  on d.fitemid=f.fitemid  where d.fqty>e.库存数量  exec('raiserror('物料代码为 char(39) +@s+ char(39) 超出库存数,单据不允许保存!',18,1)')  rollback tran  end  set nocount off  go
[解决办法]
SQL code
CREATE TRIGGER up_SEOutStockON SEOutStockFOR  INSERTAS    SET NOCOUNT ON      IF EXISTS(           SELECT 1           FROM   INSERTED c                  JOIN seoutstockentry d                       ON  c.finterid = d.finterid                  JOIN (                           SELECT fitemid,                                  SUM(fqty) 库存数量                           FROM   ICInventory                           GROUP BY                                  fitemid                       ) e                       ON  d.fitemid = e.fitemid           WHERE  d.fqty > e.库存数量       )    BEGIN        DECLARE @s VARCHAR(1000)          SELECT @s = ISNULL(@s + ',', '') + f.fnumber        FROM   INSERTED c               JOIN seoutstockentry d                    ON  c.finterid = d.finterid               JOIN (                        SELECT fitemid,                               SUM(fqty) 库存数量                        FROM   ICInventory                        GROUP BY                               fitemid                    ) e                    ON  d.fitemid = e.fitemid               JOIN t_icitem f                    ON  d.fitemid = f.fitemid        WHERE  d.fqty > e.库存数量                EXEC ('raiserror(''物料代码为 ' + @s + ' 超出库存数,单据不允许保存!,18,1)')                ROLLBACK TRAN    END        SET NOCOUNT OFFGO 


[解决办法]

SQL code
create trigger up_SEOutStock on SEOutStock  for insert  as  set nocount on  if exists(  select 1  from inserted c  join seoutstockentry d  on c.finterid=d.finterid  join (  select fitemid,sum(fqty) 库存数量  from ICInventory  group by fitemid) e  on d.fitemid=e.fitemid  where d.fqty>e.库存数量)  begin  declare @s varchar(1000)  select @s=isnull(@s+',','')+f.fnumber  from inserted c  join seoutstockentry d  on c.finterid=d.finterid  join (  select fitemid,sum(fqty) 库存数量  from ICInventory  group by fitemid) e  on d.fitemid=e.fitemid  join t_icitem f  on d.fitemid=f.fitemid  where d.fqty>e.库存数量  exec('raiserror(''物料代码为 '+@s+' 超出库存数,单据不允许保存!'',18,1)')  rollback tran  end  set nocount off  go
[解决办法]
SQL code
create trigger up_SEOutStock on SEOutStock  for insert  as  set nocount on  if exists(  select 1  from inserted c  join seoutstockentry d  on c.finterid=d.finterid  join (  select fitemid,sum(fqty) 库存数量  from ICInventory  group by fitemid) e  on d.fitemid=e.fitemid  where d.fqty>e.库存数量)  begin  declare @s varchar(1000)  select @s=isnull(@s+',','')+f.fnumber  from inserted c  join seoutstockentry d  on c.finterid=d.finterid  join (  select fitemid,sum(fqty) 库存数量  from ICInventory  group by fitemid) e  on d.fitemid=e.fitemid  join t_icitem f  on d.fitemid=f.fitemid  where d.fqty>e.库存数量  exec('raiserror(''物料代码为 ' +@s+ '  超出库存数,单据不允许保存!'',18,1)')  rollback tran  end  set nocount off  go 

热点排行
Bad Request.