一个触发器的例子


Tab_A表
:ID[PK,varchar(10)],rank[varchar(10)],other[varchar(50)]
         主键(不是自动编号,例如:0000000196),等级,其它
Tab_B表:ID[PK,varchar(10)],rank[PK,varchar(10)],A_ID[PK,int,not null]
         主键(自动编号),等级(对应Tab_A的rank),Tab_A的ID
需求:
      1.向Tab_A中插入rank和other时自动算出ID;
      2.向Tab_A中插入数据时当rank不为0时将Tab_A的ID和rank字段插入到Tab_B中;
在Tab_A上建立触发器如下:
触发器:
--------------------------------------------------------------------------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
create TRIGGER [trigger_a] ON [dbo].[Tab_A]
for  INSERT
AS
begin
  declare  @m int ,@s varchar(30),@rank varchar(10)
  select @m=max(cast(ID as integer))  from tab_A
  set @m=@m+1
  set @s=cast(@m as varchar)
  while (len(@s)<10)
  begin
    set @s='0'+@s
  end
  update tab_A  set ID=@s  from  inserted where   tab_A.id=inserted.id
  select @rank=rank from inserted
  if(@rank!='0')
    insert into tab_B(A_ID,rank) values(@s,@rank)
end;


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值