1. 首页 > 科技

sqlserver触发器 当表1数据更新时 向表二插入表1更新之后的数据?

sqlserver触发器 当表1数据更新时 向表二插入表1更新之后的数据?

sql 触发器 更新一个表 把记录插入另一个表

说明: 

1、只标记了 update,没有标记 insert

2、假定 userid, gga,ggb 是 int 类型,你改成相应的类型

create trigger TriggerName on ABC

after upate

as

begin

--

declare @useridNew int;

declare @ggaNew int;

declare @ggbNew int;

--

select @useridNew = userid, @ggaNew = gga, @ggbNew = ggb

from inserted;

--

if update( gga ) or update( ggb)

begin

insert into CBA(userid, gga,ggb, tiem) values( @useridNew, @ggaNew,@ggbNew,

getdate() );

end

end

sql数据库 把表一的数据更新到表2上,怎么更新数据

你这个描述啊……

insert into 表2

select 车号

,max(载重)

,sum(实际载重)

from 表1

where 时间 between 开始时间 and 结束时间

group by 车号

至于max 和 sum那两个是不知道你是啥需求才写的……

SQL触发器更新另一张表的问题

create trigger T_updateA

on A

for update

as

if update(b)

begin

update B

set B.b = inserted.b

from inserted

where B.a = inserted.a -- where 条件是假设的,你自己去写

end

如何在触发器里写:当一张表被更新时,更新它关联的一张表

哎。。。刚开完会,不然早就弄好了,给你加了会儿班,呵呵。

环境—oracle

最不理想的就是行级触发器里面不用使用select原表等操作,而表级触发器又不能用:new和:old,

所以只能这样判断update、insert、delete来实现,否则得使用行级和表级和中间表才能实现,比较麻烦了。

--建表:

create table system.zhidao_20131014_tab2_1

(

       HEAD_ID  varchar2(10),

       LINE_ID  varchar2(10),

       QTY  number

);

create table system.zhidao_20131014_tab2_2

(

       HEAD_ID  varchar2(10),

       SUMQTY  number

);

--造数:

insert into system.zhidao_20131014_tab2_1

select 'H1','1',100 from dual

union all

select 'H1','2',200 from dual

union all

select 'H1','2',300 from dual

union all

select 'H1','2',100 from dual;

insert into system.zhidao_20131014_tab2_2

select 'H1',700 from dual;

commit;

--触发器:

create or replace trigger tr_zhidao

after insert or update or delete

on system.zhidao_20131014_tab2_1

for each row

begin

  case

    when updating then

      update system.zhidao_20131014_tab2_2 t set SUMQTY=SUMQTY - :old.QTY + :new.QTY where t.head_id=:new.head_id;

    when inserting then

      update system.zhidao_20131014_tab2_2 t set SUMQTY=SUMQTY + :new.QTY where t.head_id=:new.head_id;

    when deleting then

      update system.zhidao_20131014_tab2_2 t set SUMQTY=SUMQTY - :old.QTY where t.head_id=:old.head_id;

  end case;

end;

--测试:

--insert

insert into system.zhidao_20131014_tab2_1 

select 'H1','3',300 from dual;

--delete

delete system.zhidao_20131014_tab2_1 where HEAD_ID='H1' and LINE_ID='3';

--update

update system.zhidao_20131014_tab2_1 set QTY=1000 where QTY=300;有问题再追问,望采纳啊。