当前位置: 代码迷 >> Sql Server >> 求触发器,或其余好方法
  详细解决方案

求触发器,或其余好方法

热度:49   发布时间:2016-04-27 11:45:57.0
求触发器,或其他好方法
表A如下
id name bank account salary
1 AAA IC 1111 200
2 BBB AB 2222 300


id 自动递增,插入一条新记录与AAA同名,则自动添加bank, account. 变成如下

id name bank account salary
1 AAA IC 1111 200
2 BBB AB 2222 300
3 AAA IC 1111 400
 
触发器怎么写?谢谢,谢谢

------解决方案--------------------
SQL code
CREATE TABLE [dbo].[table1](    [id] [int] IDENTITY(1,1) NOT NULL,    [name] [varchar](50) NULL,    [bank] [varchar](50) NULL,    [account] [int] NULL,    [salary] [float] NULL) ON [PRIMARY]GOinsert table1([name],[bank],[account],[salary])select 'AAA','IC',1111,200 union allselect 'BBB','AB',2222,300---------------------------------------------create trigger newRecInserton table1after insertasif exists (select top 1 * from table1,inserted where table1.name=inserted.name)begin    declare @bank varchar(50),@account int    select @bank=table1.bank,@account=table1.account from table1,inserted     where table1.name=inserted.name and table1.bank is not null    update table1 set [email protected],[email protected]    from table1,inserted    where table1.name=inserted.nameend---------------------------------------------insert table1([name],[salary])select 'AAA',400select * from table1drop table table1
------解决方案--------------------
SQL code
create table taba(id int identity(1,1),  name varchar(5), bank varchar(5), account varchar(5), salary int)insert into taba(name,bank,account,salary)select 'AAA', 'IC', '1111', 200 union allselect 'BBB', 'AB', '2222', 300create trigger tr_tabaon taba instead of insertasbegin insert into taba(name,bank,account,salary) select i.name,        isnull(bank,(select top 1 bank from taba where name=i.name)),        isnull(account,(select top 1 account from taba where name=i.name)),        salary from inserted iendinsert into taba(name,salary) select 'AAA',400select * from taba/*id          name  bank  account salary----------- ----- ----- ------- -----------1           AAA   IC    1111    2002           BBB   AB    2222    3003           AAA   IC    1111    400(3 row(s) affected)*/
  相关解决方案