程序业务流程如下:
1、接收数据保存至表[Tc_Content]
2、运行触发器,当[Tc_Content]表接收到数据后,根据类型从[Tc_User]表中提取用户
3、将提取的用户信息写入表[Tc_SmsMt]
我设计的触发器:
create trigger TriggerName
on [Tc_User],[Tc_SmsMt]
after insert
as 
if(insert * into [Tc_Content] )
begin
select * from [Tc_User]
where [Tc_User].[id]=[Tc_Content].[id],
insert * into [Tc_SmsMt] select [id] from [Tc_User]
where [Tc_SmsMt].[id]=[Tc_User].[id]
end
望各位高手指正一下这个程序是否可行
以前没做过触发器 不太熟
谢谢!!!

解决方案 »

  1.   

    楼主用的是 sql server?如果是的话, 这个触发器有语法问题
      

  2.   

    on [Tc_User],[Tc_SmsMt] 
    insert * into [Tc_Content]insert * into [Tc_SmsMt] select [id] from [Tc_User]
    都是語法錯誤
      

  3.   

    -- 根据你的业务描述, sql server 的触发器应该大致写成如下的create trigger TriggerName 
    on [Tc_Content]  -- 当[Tc_Content]表接收到数据后, 所以触发器基于 [Tc_Content]
    after insert 
    as
    insert [Tc_SmsMt] -- 将提取的用户信息写入表[Tc_SmsMt] 
    select a.*
    from [Tc_User] a, -- 从[Tc_User]表中提取用户
    inserted i    -- inserted 是触发器中的逻辑表, 代表当前插入的记录集
    where a.类型 = i.类型  -- 根据类型从[Tc_User]表中提取用户
    go
      

  4.   

    楼主的SQL SERVER 吗?还是自己开发的数据库。看了好久没有看明白,基于表建触发器哦,
      

  5.   

    回3楼的朋友
    [Tc_User]表中提取的用户
    应该是根据[Tc_Content]表中所得到的数据
    这个好像没有体现哦
    这几个表之间都是以字段id联系的
    create trigger TriggerName 
    on Tc_Content
    after insert 
    as
    insert Tc_SmsMt
    select id.*
    from Tc_User id,
        inserted id  
    where id.类型 = id.类型
    go
    这样也不对...
    这个如何解决啊?
      

  6.   

    是用SQL SERVER
    只是简单的一个插入触发器
    中间的表间关联语句不太清楚
    我以前没做过触发器
    大姑娘上轿第一次啊
      

  7.   

    修改了一下:create trigger TriggerName 
    on [Tc_Content]
    after insert 
    as 
    select * from [Tc_User] 
    where [Tc_User].[id]=[Tc_Content].[id]
    insert [Tc_SmsMt]
    select a.* 
    from [Tc_User] a,
    inserted i
    where a.id=i.id 
    end 编译时报end附近有错
    不解啊...
      

  8.   

    举例说明
    [Tc_Content]表接收到一条数据id=“T5”
    运行触发器TriggerName
    在[Tc_User]表中查找id=“T5”所对应的用户a的信息
    把这些信息反馈到[Tc_SmsMt]表中
    简单的流程就是这样的...
    我根据3楼朋友所说的在8楼改的那个程序不对
    各位指教下错误的地方啊...
      

  9.   


    create trigger TriggerName 
    on [Tc_Content]
    after insert 
    as 
    begin
    select * from [Tc_User] 
    where [Tc_User].[id]=[Tc_Content].[id]
    insert [Tc_SmsMt]
    select a.* 
    from [Tc_User] a,
    inserted i
    where a.id=i.id 
    end