CREATE TRIGGER [a] ON [cbjbxx] 
FOR insert
AS
if (select cjgdm from inserted)=
(select cjgdm from cjgdmb) 
insert into cbxx(zwcm,cjgmc)
select a.zwcm,b.cjgmc from cbjbxx a,cjgbmb b where a.cjgdm=b.cjgbm

解决方案 »

  1.   

    没有看到,
    CREATE TRIGGER [a] ON [cbjbxx] 
    FOR insert
    AS
    insert into cbxx(zwcm,cjgmc)
    select inserted.zwcm,cjgdmb.cjgmc
    from inserted
    left join cjgdmb on inserted.cjgdm =cjgdmb.cjgdm
      

  2.   

    如果你的触发条件是在新增时:
    CREATE TRIGGER [a] ON [cbjbxx] 
    FOR insert
    AS
    begin
    insert into cbxx(zwcm,cjgmc) select inserted.zwcm,cjgdmb.cjgmc from inserted inner join cjgdmb on inserted.cjgdm=cjgdmb.cjgdm
    end
      

  3.   

    點擊顯示導航欄顯示樹形->展開數據庫開發->MS-SQL SERVER ->基礎類(這是小類)
    然后本版我的問題下面有個鏈接提問..
      

  4.   

    感谢各位,可能我的题目没表述清楚:
    我的用意并不是简单地连接两张表,而是当Table1新增一条记录时,将Table1中的此条记录的cjgdm字段的值根据table2,换算得cjgmc,而后,将此记录放到Table3中。(即对新增记录的代码字段的值换成名称。)
    我写的Trigger如下:
    CREATE TRIGGER [Tri_cbjbxx_Ins] ON [cbdj] 
    FOR INSERT
    ASDECLARE @zwcm   varchar(20),
    @cjgdm varchar(4),
    @cjgmc varchar(12)DECLARE cbjbxx_ins CURSOR
    FOR
    SELECT i.zwcm,i.cjgdm
    from inserted i     open cbjbxx_ins
        fetch next from cbdj_ins into  @zwcm,@cjgdm
    --
    --  @cjgmc=select cjgmc from cjgdmb where cjgdm=@cjgdm
    --  上面这句话的语法肯定是错误的。只想表示一下我的用意,
    --  用一个变量@cjgmc。根据@cjgdm在表cjgdmb计算出@cjgmc的值。
    --  最后将它发给存储过程来处理。
    --
        while(@@fetch_status<>-1)
        begin
        EXEC share..pro_cbjbxx_ins  @zwcm,@cjgmc
        fetch next from cbjbxx_ins into  @zwcm,@cjgmc
        end    close cbjbxx_ins
        deallocate  cbjbxx_insRETURN 
    CREATE PROCEDURE [dbo].[pro_cbjbxx_ins](  
    @zwcm   varchar(20),
    @cjgmc varchar(12),
    ) AS select zwcm from cbxxwhere zwcm=@zwcmif @@rowcount=0
    insert cbxx(zwcm,cjgmc)values(@zwcm,@cjgmc)
    else
    update cbxx
    set cjgmc=@cjgmc
    where zwcm=@zwcm
    GO
      

  5.   

    蓬蓬:
    不知道能不能满足你的需求
    CREATE TRIGGER [table1_insert] ON [table1] 
    FOR INSERT
    ASinsert table3(zwcm,cjgmc) (select a.zwcm,b.cjgmc from inserted a,table2 where a.cjgdm=b.cjgdm)
      

  6.   

    蓬蓬:
    不知道能不能满足你的需求
    CREATE TRIGGER [table1_insert] ON [table1] 
    FOR INSERT
    ASinsert table3(zwcm,cjgmc) (select a.zwcm,b.cjgmc from inserted a,table2 b where a.cjgdm=b.cjgdm)
      

  7.   

    感谢各位,可能我的题目没表述清楚:
    我的用意并不是简单地连接两张表,而是当Table1新增一条记录时,将Table1中的此条记录的cjgdm字段的值根据table2,换算得cjgmc,而后,将此记录放到Table3中。(即对新增记录的代码字段的值换成名称。)
    我写的Trigger如下:
    CREATE TRIGGER [Tri_cbjbxx_Ins] ON [cbdj] 
    FOR INSERT
    ASDECLARE @zwcm   varchar(20),
    @cjgdm varchar(4),
    @cjgmc varchar(12)DECLARE cbjbxx_ins CURSOR
    FOR
    SELECT i.zwcm,i.cjgdm
    from inserted i     open cbjbxx_ins
        fetch next from cbdj_ins into  @zwcm,@cjgdm
    --
    --  @cjgmc=select cjgmc from cjgdmb where cjgdm=@cjgdm
    --  上面这句话的语法肯定是错误的。只想表示一下我的用意,
    --  用一个变量@cjgmc。根据@cjgdm在表cjgdmb计算出@cjgmc的值。
    --  最后将它发给存储过程来处理。
    --
        while(@@fetch_status<>-1)
        begin
        EXEC share..pro_cbjbxx_ins  @zwcm,@cjgmc
        fetch next from cbjbxx_ins into  @zwcm,@cjgmc
        end    close cbjbxx_ins
        deallocate  cbjbxx_insRETURN 
    CREATE PROCEDURE [dbo].[pro_cbjbxx_ins](  
    @zwcm   varchar(20),
    @cjgmc varchar(12),
    ) AS select zwcm from cbxxwhere zwcm=@zwcmif @@rowcount=0
    insert cbxx(zwcm,cjgmc)values(@zwcm,@cjgmc)
    else
    update cbxx
    set cjgmc=@cjgmc
    where zwcm=@zwcm
    GO
    谢谢,老冯,但是要实现我要的功能,如果修改我写的这段代码呢?
      

  8.   

    --
    --  @cjgmc=select cjgmc from cjgdmb where cjgdm=@cjgdm
    --  上面这句话的语法肯定是错误的。只想表示一下我的用意,
    --  用一个变量@cjgmc。根据@cjgdm在表cjgdmb计算出@cjgmc的值。
    --  最后将它发给存储过程来处理。
    --
    改为:
    select @cjgmc=cjgmc from cjgdmb where cjgdm=@cjgdm
    就可以了。