a,b两个表,我要求A表增加记录B表也增加,A表删除记录B表也删除同样记录,如何用触发器实现?
---------------------------------------------------
A表字段:
客户编码,客户名称B表字段:
客户编码二,客户名称二我想通过触发器实现,只操作A表,就同样操作B表,让B表与A表的记录内容完全一样(两个就是字段名不一样,但结构都相同)增加功能的触发器好实现:
CREATE TRIGGER [insert_kehu] ON [dbo].[客户编码表] 
FOR INSERT
AS
insert into 客户编码表二
(客户编码二,客户名称二)
select 客户编码,客户名称
from inserted但是删除功能的触发器,我不会写

解决方案 »

  1.   

    create trigger tri_delete
    on a表
    for delete
    as
    begin
       delete 表b where 客户编码2 in(select 客户编码 from deleted)
    end
      

  2.   

    单向的吗?
    CREATE TRIGGER [insert_kehu] ON [dbo].[客户编码表] 
    FOR INSERT 
    AS 
    insert into 客户编码表二 
    (客户编码二,客户名称二) 
    select 客户编码,客户名称 
    from inserted goCREATE TRIGGER [delete_kehu] ON [dbo].[客户编码表] 
    FOR delete
    AS 
    delete 客户编码表二 
    from 客户编码表二,deleted d
    where 客户编码二=d.客户编码goCREATE TRIGGER [update_kehu] ON [dbo].[客户编码表] 
    FOR update
    AS update 客户编码表二 set
       客户名称二 = i.客户名称二
    from 客户编码表二,inserted i
    where 客户编码二=i.客户编码go
      

  3.   

    触发器中维护两张表   一张inserted是记录更新前后数据,deleted是记录更新前的数据
      

  4.   

    以下两种写法,哪种效率高些呢?CREATE TRIGGER [update_kehu] ON [dbo].[客户编码表] 
    FOR update
    AS update 客户编码表二 set
       客户名称二 = i.客户名称
    from 客户编码表二,inserted i
    where 客户编码二=i.客户编码
    --与CREATE TRIGGER [update_kehu] ON [dbo].[客户编码表] 
    FOR update
    AS update 客户编码表二 set
       客户名称二 = i.客户名称
    from 客户编码表二 a inner join inserted i
    on a.客户编码二=i.客户编码
      

  5.   

    楼主,使用级联删除吧CREATE TABLE A001(F_ID INT PRIMARY KEY,F_NAME VARCHAR(20)) 
    GO
    CREATE TABLE A002(F_ID INT REFERENCES A001(F_ID) ON DELETE CASCADE,F_NAME VARCHAR(20)) 
    GOCREATE TRIGGER TR_A001
    ON A001
    FOR INSERT 
    AS 
    BEGIN
    INSERT INTO A002 (F_ID,F_NAME) SELECT F_ID,F_NAME FROM INSERTED
    END测试一下哦:
    INSERT INTO A001 (F_ID,F_NAME) SELECT 1,'AA'
    SELECT * FROM A001
    SELECT * FROM A002DELETE FROM A001 
    SELECT * FROM A001
    SELECT * FROM A002
      

  6.   

    CREATE TRIGGER [insert_kehu] ON [dbo].[客户编码表]
    FOR DELETE
    AS
    DELETE FROM  客户编码表二
    WHERE 客户编码二=(select 客户编码 from DELETED)GO
      

  7.   

    为什么这样也可以呢?
    WHERE 客户编码二=(select 客户编码 from DELETED)
    deleted表有可能不是一条记录呀,如果是多条记录的话,语法不就报错了吗?
    请教一下.
      

  8.   

    为什么这样也可以呢? 
    WHERE 客户编码二=(select 客户编码 from DELETED) 
    deleted表有可能不是一条记录呀,如果是多条记录的话,语法不就报错了吗? 
    请教一下.
    -----------------------
    这样写是不行的,不信就试试,删除两条记录时会报错