表A:
id    name        password
1    zhangsan       123
2      lisi         123
表B:
id    name        password
表A:id为1的数据,如果password表更为456之后,相应的表B里面会插入一条数据为:id,zhangsan,456
触发器 触发器

解决方案 »

  1.   

    只有在表A的password列有数据修改之后才会触发
      

  2.   


     create table A(
       id int,
       name varchar(30),
       [password] varchar(30)
     )
     go
     insert into A 
     select 1,'zhangsan','123'
     union all
     select 2,'lisi','123'
     
     create table B(
       id int,
       name varchar(30),
       [password] varchar(30)
     ) go
     create procedure spOutput(
       @password varchar(30)
     )
     as
     begin
        update A SET [PASSWORD]=@password 
    output inserted.id,inserted.name,inserted.password into B
    WHERE ID=1
     end; go
     exec spOutput '456'
     go
     select * from B
      

  3.   

    我现在都建议developers 尽量避免trigger,管理起来麻烦,能用output 的为什么不呢?
      

  4.   

    CREATE TABLE A
    (
    ID  INT,
    NAME NVARCHAR(10),
    PWD NVARCHAR(50)
    )
    INSERT INTO A 
    SELECT 1 ,'zhangsan','123' UNION ALL
    SELECT 2 ,'lisi', '123'CREATE TABLE B
    (
    ID  INT,
    NAME NVARCHAR(10),
    PWD NVARCHAR(50)
    )
    GOCREATE TRIGGER TriPwd_Update
    ON A
        for UPDATE
    AS 
    BEGIN
     if (update(PWD))
    begin
      INSERT  INTO  B  select ID,NAME,PWD from inserted;
    end
    END
    GOupdate  A  set PWD=345 where  ID='1'
    update  A  set NAME=345 where  ID='2'select * from B
      

  5.   

    Create Trigger trg
    on A for update
     As   
    declare @id int, @name varchar(30),@password varchar(30)
    if Update(password) 
    begin
     select @id = id,@name = name,@password=password from inserted
     insert into B values(@id,@name,@password)
    end
    update a set password = 456 where id = 1
      

  6.   

    我主要问题就是之前没有针对某一列做过,刚才已经查到UPDATE函数了