在sql server 2005中创建触发器,同时在2个表中插入数据
表:
Tabel1:
id       interger;
users    vchar(100);
pwd      vchar(20);
Tabel2:
id       interger;
users    vchar(100);
pwd      vchar(20);
flag     char(1) not  null;如上2张表,当向tabel1中插入数据时,也向tabel2中插入数据,同时tabel2表中的‘flag’字段的值自动插入为‘N’.请大家帮我看下~~~~

解决方案 »

  1.   

    --演示环境
    USE ZHH
    GO
    CREATE TABLE Tabel1(
    id int,
    users VARCHAR(100),
    pwd VARCHAR(20)
    )
    create table Tabel2(
    id int,
    users VARCHAR(100),
    pwd VARCHAR(20),
    flag char(1) not null
    )
    --触发器
    CREATE TRIGGER T_INSERT ON TABEL1 AFTER INSERT 
    AS IF EXISTS(SELECT 1 FROM INSERTED)
    BEGIN 
       INSERT INTO  Tabel2(ID,USERS,PWD,FLAG)
       SELECT ID,USERS,PWD,'N'
       FROM INSERTED
    END--测试
    INSERT INTO  Tabel1(ID,USERS,PWD)
       SELECT 1,'CESHI','123'
       
    --查询插入结果
    SELECT * FROM Tabel1
    SELECT * FROM Tabel2
    /*结果:
    id          users                                                                                                pwd
    ----------- ---------------------------------------------------------------------------------------------------- --------------------
    1           CESHI                                                                                                123(1 行受影响)id          users                                                                                                pwd                  flag
    ----------- ---------------------------------------------------------------------------------------------------- -------------------- ----
    1           CESHI                                                                                                123                  N(1 行受影响)*/--删除演示环境
    DROP TABLE Tabel1,Tabel1
      

  2.   


    还是写存过好:
    ----------存过实现
    CREATE PROC P_INSERT @id int,@users VARCHAR(100),@pwd VARCHAR(20)
    AS
    BEGIN TRAN 
       --往Tabel1插入数据
       INSERT INTO  Tabel1(ID,USERS,PWD)
       SELECT @id,@users,@pwd
       --往Tabel2插入数据
       INSERT INTO  Tabel2(ID,USERS,PWD,FLAG)
       SELECT @id,@users,@pwd,'N'
    COMMIT TRAN
    --测试存过
    EXECUTE P_INSERT 22,'存过测试','666'--查看结果
    SELECT * FROM Tabel1
    SELECT * FROM Tabel2
    /*结果:
    id          users                                                                                                pwd
    ----------- ---------------------------------------------------------------------------------------------------- --------------------
    1           CESHI                                                                                                123
    22          存过测试                                                                                                 666(2 行受影响)id          users                                                                                                pwd                  flag
    ----------- ---------------------------------------------------------------------------------------------------- -------------------- ----
    1           CESHI                                                                                                123                  N
    22          存过测试                                                                                                 666                  N(2 行受影响)*/
    --删除演示环境
    DROP PROC P_INSERT
    DROP TABLE Tabel1,Tabel2
      

  3.   

    CREATE TRIGGER T_INSERT ON TABEL1 AFTER INSERT 
    AS 
       INSERT INTO  Tabel2(ID,USERS,PWD,FLAG)
       SELECT ID,USERS,PWD,'N'
       FROM INSERTED