触发器错误
提示对象名inserted 无效
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- 针对销售订单的触发器,当审核时插入数据到lbgdxdata数据库中
-- =============================================
alter TRIGGER lbg_SO_SOMain
ON SO_SOMain
for UPDATE
AS
declare @cVerifier varchar(20),
@sysdate varchar(50),
@sql varchar(4000)
set @sysdate = Datename(year,GetDate())+'-'+Datename(month,GetDate())+'-'+Datename(day,GetDate())
+' '+Datename(hour,GetDate())+':'+Datename(mi,GetDate())+':'+Datename(second,GetDate())
select @cVerifier=cVerifier from inserted
if @cVerifier <>NULL or @cVerifier<>''
begin
set @sql='insert into lbgdxdata..ky_record(djh,djrq,djlx,khbm,khmc,chbm,chmc,jldw,jldwmc,ggxh,sl,dj,je,sysdate)
select so1.cSOCode,so1.dDate,''销售订单'' as djlx,so1.cCusCode,so1.ccusname,so2.cInvCode,inv.cinvname,inv.cComUnitCode,cComUnitname,inv.cInvStd,iQuantity,iTaxUnitPrice,iSum,''' + @sysdate
+ ''' from inserted so1
left join SO_SODetails so2 on so1.csocode=so2.csocode
left join customer cus on so1.cCusCode=cus.cCusCode
left join inventory inv on so2.cinvcode=inv.cinvcode
left join ComputationUnit com on inv.cComUnitCode=com.cComUnitCode'
exec(@sql)
end
GO
[解决办法]
你这个inserted应该是一个表或者视图,
如果不是名字错误的话,就是你的当前数据库是不是正确,
或者试试把前面的前缀补充起来,类似dbo.inserted什么的
[解决办法]
去sql版发问吧,跟delphi没半毛钱关系啊
[解决办法]
inserted表只能是在触发器中用到,你用Exec等于是另一个过程,在这个过程中当然是无效的。改成如下:
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- 针对销售订单的触发器,当审核时插入数据到lbgdxdata数据库中
-- =============================================
alter TRIGGER lbg_SO_SOMain
ON SO_SOMain
for UPDATE
AS
declare @cVerifier varchar(20),
/*@sysdate varchar(50),
@sql varchar(4000)
set @sysdate = Datename(year,GetDate())+'-'+Datename(month,GetDate())+''+Datename(day,GetDate())
+' '+Datename(hour,GetDate())+':'+Datename(mi,GetDate())+':'+Datename(second,GetDate())
*/
select @cVerifier=cVerifier from inserted
if @cVerifier <>NULL or @cVerifier<>''
begin
insert into lbgdxdata..ky_record(djh,djrq,djlx,khbm,khmc,chbm,chmc,jldw,jldwmc,ggxh,sl,dj,je,sysdate)
select so1.cSOCode,so1.dDate,'销售订单' as djlx,so1.cCusCode,so1.ccusname,so2.cInvCode,inv.cinvname,inv.cComUnitCode,cComUnitname,inv.cInvStd,iQuantity,iTaxUnitPrice,iSum,convert(varchar(20),getdate(),120) as sysdate from inserted so1
left join SO_SODetails so2 on so1.csocode=so2.csocode
left join customer cus on so1.cCusCode=cus.cCusCode
left join inventory inv on so2.cinvcode=inv.cinvcode
left join ComputationUnit com on inv.cComUnitCode=com.cComUnitCode
if @@Error<>0 or @@Rowcount=0
begin
raiserror(N'失败',16,1)
rollback tran
return
end
end