SQL数据库 触发器实现多表同步插入

SQL数据库 触发器实现多表同步插入,第1张

create TRIGGER [dbo].[tr_tb_erp_make_Pack_insert]

ON [dbo].[tb_erp_make_Pack]

FOR INSERT

AS

BEGIN

SET XACT_ABORT ON

SET NOCOUNT ON

declare @out_Flag int=0

declare @out_Rtn varchar(40)=''

declare @smsg nvarchar(400)

DECLARE @v_barCode VARCHAR(20)

DECLARE @v_cInvCode NVARCHAR(20)

DECLARE @v_packID INT

DECLARE @v_packDate DATETIME

DECLARE @v_userID INT

begin tran

DECLARE Cur CURSOR FOR

SELECT barCode,cInvCode,packID,packDate,userID FROM insertedOPEN Cur

FETCH NEXT FROM Cur INTO @v_barCode,@v_cInvCode,@v_packID,@v_packDate,@v_userIDWHILE @@FETCH_STATUS=0

BEGIN

SET @out_Flag = 0

SET @out_Rtn='添加成功!'

IF EXISTS(SELECT 1 FROM tb_erp_make_barCode WHERE barCode=@v_barCode)BEGIN

UPDATE dbo.tb_erp_make_barCode SET cInvCode=@v_cInvCode,packID=@v_packID,packDate=@v_packDate,vFlag=0 WHERE barCode=@v_barCodeIF @@error <>0

BEGIN

SET @out_Flag=1

SET @out_Rtn='触发器修改(UPDATE)错误!'

SET @smsg='错误:'+@out_Rtn

ROLLBACK TRAN

RAISERROR (@smsg,11,1)

RETURN

END

END

ELSE

BEGIN

INSERT INTO dbo.tb_erp_make_barCode

(

barCode ,packID ,packDate ,cInvCode

)

VALUES (

@v_barCode ,@v_packID ,GETDATE() ,@v_cInvCode)

IF @@error <>0

BEGIN

SET @out_Flag=2

SET @out_Rtn='触发器新增(INSERT)错误!'

SET @smsg='错误:'+@out_Rtn

ROLLBACK TRAN

RAISERROR (@smsg,11,1)

RETURN

END

END

FETCH NEXT FROM Cur INTO @v_barCode,@v_cInvCode,@v_packID,@v_packDate,@v_userIDEND

CLOSE Cur

DEALLOCATE Cur

COMMIT TRAN

RETURN

应该是没有设置好环境变量。

你的描述中没有说清楚你到底用的什么用户执行时出错。

可以找个好用的用户,对照着看看都设置的哪些环境变量,照着设置了就行了。

一般要设置:

ORACLE_HOME

ORACLE_BASE

PATH ,把oracle的bin目录加进去。

LIBPATH或LD_LIBARAY_PATH,可以都设置上同样的。

例如:LD_LIBRARY_PATH=/oracle/OraHome_1/lib32:/oracle/OraHome_1/network/lib:.

还有就是ORACLE_SID.

这些都设置好了估计就够了。

这样的表最好不要在触发器中创建,如果你的业务模式比较固定,a_number_b,

a_number_C,a_number_D三个表都应该是创建好了,直接在触发器中更新数据。

如果仅仅这三个表是临时表,就写语句创建,用完之后删掉.

看你的逻辑比较乱,A的触发器,是如何从B中取值的,取值的根据是什么,就是select * into 新表名 from B,如何跟A对应的?


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11342483.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存