none
求问触发器的问题.. RRS feed

  • 问题

  • create trigger trig_In
    on tb_Test
    for insert
    as
    update tb_Test set TestTR='1' where XXXXX
    在表中insert时候触发,想在插入时候触发,同时更新插入的这一条记录中的TestTR='1', 想问一下这里的where后面该怎么写才能实现得到得到当前插入的那一行记录..
    2010年3月17日 15:33

答案

  • update tb_Test set TestTR='1' where id in (select id from inserted)

    (ps,假设id是主键)

    family as water
    • 已标记为答案 FrostX 2010年3月18日 4:20
    2010年3月18日 1:07
  • --方法1,設置默認值
    create table tb_Test(ID int primary key,Code int,TestTR nvarchar(10) default('1'))
    
    --插入
    insert tb_Test(ID,Code) values(1,10)
    go
    
    --方法2,觸發器
    
    create trigger trig_In
    on tb_Test
    for insert
    as
    update tb_Test
    set TestTR='1'
    from tb_Test a ,inserted i
    where a.ID=i.ID
    go
    --或
    
    create trigger trig_In
    on tb_Test
    instead of insert
    as
    insert tb_Test(ID,Code,TestTR)
    select ID,Code,'1' from inserted
    


    ROY WU(吳熹)
    • 已标记为答案 FrostX 2010年3月18日 4:21
    2010年3月18日 1:47
    版主

全部回复

  • New rows are in inserted table.
    2010年3月17日 17:59
  • update tb_Test set TestTR='1' where id in (select id from inserted)

    (ps,假设id是主键)

    family as water
    • 已标记为答案 FrostX 2010年3月18日 4:20
    2010年3月18日 1:07
  • --方法1,設置默認值
    create table tb_Test(ID int primary key,Code int,TestTR nvarchar(10) default('1'))
    
    --插入
    insert tb_Test(ID,Code) values(1,10)
    go
    
    --方法2,觸發器
    
    create trigger trig_In
    on tb_Test
    for insert
    as
    update tb_Test
    set TestTR='1'
    from tb_Test a ,inserted i
    where a.ID=i.ID
    go
    --或
    
    create trigger trig_In
    on tb_Test
    instead of insert
    as
    insert tb_Test(ID,Code,TestTR)
    select ID,Code,'1' from inserted
    


    ROY WU(吳熹)
    • 已标记为答案 FrostX 2010年3月18日 4:21
    2010年3月18日 1:47
    版主