create table T(列名 varchar(3))
gocreate trigger trg_T
on T
instead of insert,delete
as
begin
    update T set 列名=right('000'+cast((T.列名-1) as varchar(3)),3) 
    from T,deleted where T.列名>deleted.列名
    
    update T set 列名=right('000'+cast((T.列名+1) as varchar(3)),3) 
    from T,inserted where T.列名>=inserted.列名
end
godrop trigger trg_T
drop table T

解决方案 »

  1.   

    create table T(列名 varchar(3))
    gocreate trigger trg_T1
    on T
    instead of insert
    as
    begin
        update T set 列名=right('000'+cast((T.列名+1) as varchar(3)),3) 
        from T,inserted where T.列名>=inserted.列名    insert into T select * from inserted
    end
    gocreate trigger trg_T2
    on T
    for deleted
    as
    begin
        update T set 列名=right('000'+cast((T.列名-1) as varchar(3)),3) 
        from T,deleted where T.列名>deleted.列名
    end
    go
    drop trigger trg_T1,trg_T2
    drop table T