如何用触发器实现在数据库中更改一个表的某个字段,同时更新另外两个表中相同的字段

如何用触发器实现在数据库中更改一个表的某个字段,同时更新另外两个表中相同的字段,第1张

sql server

create trigger trigger_name

on tableName

for update

as

begin

declare @id varchar(36)

declare @name varchar(100)

select @id = pid,@name=name from Inserted -- 给id赋值,Inserted就是对应你修改的记录

--下面你就可以使用id和name了

update table_name2 set param1='XXX' where pid=@id

end

你可以在查询分析器中对相应的表执行一条数据,看看触发是否报错,然后确定问题原因,才好做相应的处理

比较常见的可能是:

 在触发器A中触发了另一个触发器B的话,那么,触发器中就不能有相应的批量 *** 作

例如,销售单通过触发器A来维护库存数据,库存数据变化通过触发器B来维护库存预警,当销售单添加时,销售单插入触发器可能是这样写的:

Update 库存表 

       Set 数量=数量-Inserted数量 

       Where 库存表物料编号=Inserted编号

单触这个触发器是没有问题的如果再添加库存表的更新触发器:

Insert Into 库存预警表() 

       Select  

       From Inserted 

       Inner Join 物料表 On Inserted物料编号=物料表编号

       Where 物料表预警存量<=Inserted数量 

         And Inserted物料编号 Not In (--取预警表中有效的物料编号

                                       Select Distinct 物料编号 

                                       From 库存预警表

                                       Where 有效=1)

那么,销售单插入触发器就会出错,也就无法向销售单插入记录了

解决办法是,将销售单插入触发器里的Update 语句改成一个循环,每次更新库存表一条记录,其主体大约是这个样子:

--定义游标

--循环

  --Update 库存表 

  --       Set 数量=数量-@数量 

  --       Where 库存表物料编号=@编号

这样,就会正常了

vfp提供的触发器包括添加,删除,修改触发器,表示分别在执行这三项 *** 作时会被触发的条件。

update,insert,delete的sql命令都不需要打开表,只要在路径里能找到表就可以了,就在命令窗口里输入就可以了,当然也可以在程序中输入语法错误,肯定你有输错的地方。

VFP,VisualFoxPro,是Microsoft公司从Fox公司的FoxBase数据库软件经过数次改良,并且移植到Windows之后,得来的应用程序开发软件,主要用于开发数据管理与运算等方面的软件。VFP是Microsoft公司推出的最新可视化数据库管理系统平台,是功能特别强大的32位数据库管理系统,它提供了功能完备的工具,极其友好的用户界面,简单的数据存取方式,独一无二的跨平台技术,交肯有良好的兼容性,真正的可编译性和较强的安全性,是目前最快捷,最实用的数据库管理系统软件之一。

ALTER TRIGGER [dbo][T_Update]

ON [dbo][C_Detail]

FOR UPDATE

AS

DECLARE @INCODE INT;

DECLARE @SUM INT;

SELECT @INCODE = INCODE FROM deleted;

IF (exists (SELECT FROM C_Head WHERE INCODE = @INCODE))

BEGIN

SELECT @SUM=SUM(1) FROM C_Detail WHERE INCODE = @INCODE and ISUSE='N';

UPDATE C_Head SETCANUSER=@SUMWHERE INCODE = @INCODE;

END

楼主 触发器顾名思义 是更改 *** 作 而触发的事件

触发器是不做查询 *** 作的 没有意义

如果你想查询原值及新值 那么你需要新增加一个字段 储存原值

然后 你什么时候查询 就可以自己写查询语句了

如果有什么疑问可以随时找我

希望解决了楼主的疑问

用触发器吧

create trigger trigger_before_planinfo_update

before update

ON BB FOR EACH ROW

BEGIN

insert into aa values ('1000');

END

以上就是关于如何用触发器实现在数据库中更改一个表的某个字段,同时更新另外两个表中相同的字段全部的内容,包括:如何用触发器实现在数据库中更改一个表的某个字段,同时更新另外两个表中相同的字段、师兄,我想向您请教个问题,我的sQL数据库,之前用了几个触发器来修改、vfp触发器设置可以修改前10条记录怎么设置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9870844.html

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

发表评论

登录后才能评论

评论列表(0条)

保存