假设有两张表,一张为 *** 作记录表tbA(MyID,MyX,MyY),一张为账户余额表tbB(MyID,MySum)
MyID:int类型
MyX:money类型
MyY:int类型(-1取钱,1存钱)
MySum:money类型
我想在我记录存入多少钱的同时,在余额表里的MySum里的数据也更着改变,而我们也不需要对余额有任何 *** 作
示例代码如下:
create trigger MyMoneyTrg
on tbA
for insert,update
as
declare @ID int,
@X money,
@Y int
begin
select @ID=MyID,@X=MyX,@Y=MyY from inserted
--这里从inserted表里取到了更新的必要数据,inserted表是更新的数据暂时存放的表,触发器执行结束这个表就消失了
update tbB set MySum=(@X@Y+Mysum) where MyID=@ID
end
这个范例能在触发器的作用\方法\语法等方面描述触发器,希望这位同学能举一反三
先判断是否存在,存在就更新IFEXISTS(SELECT1FROMsys_empa,insertedbjoinhr_emp_titleconbempid=cempid)BEGINupdatecsetctitle_code=btitle_codefrominsertedbjoinhr_emp_titleconbempid=cempidEND不存在就插入ELSEBEGINinsertintohr_emp_title(empid,title_code)selectempid,title_codefrominserted;END
在触发器中有2个表,inserted,deleted
inserted表:用来存储INSERT和UPDATE语句所影响的行的副本。意思就是在inserted表中临时保存了被插入或被更新后的记录行。在执行 INSERT 或UPDATE 语句时,新加行被同时添加到inserted表和触发器表中。因此,可以从inserted表检查插入的数据是否满足需求,如不满足则回滚撤消 *** 作。
deleted表:用来存储DELETE和UPDATE语句所影响行的副本。意思是在delete表中临时保存了被删除或被更新前的记录行。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传到deleted表中。所以可以从deleted表中检查删除的数据行是否能删除。
create
trigger
a1_a
on
[dbo][a1]
for
insert
as
insert
into
bdbob1(g,h,j)
select
c
as
g,d
as
h,e
as
j
from
inserted
在a数据库a1表,加上面的触发器(只限于同一台服务器不通数据库数据转存),如果要在不同的服务器上,就先在a所在服务器上加链接服务器,触发器修改为:
create
trigger
a1_a
on
[dbo][a1]
for
insert
as
insert
into
[server
name]bdbob1(g,h,j)
select
c
as
g,d
as
h,e
as
j
from
inserted
这个用触发器处理比较好
你可以创建一个插入触发器,当插入数据时将id 自动更新为要修改的值
类别如下其中inserted为触发器中的临时表,其结构与原表一样,保存新插入或修改後的数据。
create trigger insert_a_tri on A after insert as
update A set Aid = 'A' + Aid from inserted b where Aid = bid and adatetime = bdatetime and atestno = btestno
以上就是关于SQL触发器。当我一个数据库中的一个表更新一个信息,另个表插入一个条信息怎么写全部的内容,包括:SQL触发器。当我一个数据库中的一个表更新一个信息,另个表插入一个条信息怎么写、达蒙数据库sql不存在插入,存在更新、SQL Server里触发器里的语句如何读取到新插入的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)