现在我要写两个触发器,1.将表一中的数据 插入 到表三
表一
 ID1  ID2  name1 date1(varchar(14)-即200604051120230)
  1          刘    200604051120230                         ---id2 为空
       a     王    200604041120230                         ---id1 为空插入后的效果
表三
 ID   name  date(datetime)
  1   刘    2006-04-05 11:20:230                         
  a   王    2006-04-04 11:20:230                         ---这里需要判断,如果表一的id1为空 则表三的id=表一的id22.根据表二中的数据(时间字段) 修改 到表三
表二
 ID1  ID2  name1 date1(varchar(14)-即200604051120230)
  1          刘    200704051120230                         ---id2 为空
       a     王    200704041120230                         ---id1 为空修改后的效果
表三
 ID   name  date(datetime)
  1   刘    2007-04-05 11:20:230                          
  a   王    2007-04-04 11:20:230                          ---这里需要判断,如果表二的id1为空 则表三的id=表二的id2

解决方案 »

  1.   

    楼主的触发器要在什么时候触发?inserted? update?
      

  2.   

    针对表一 表二 都是insert触发器
      

  3.   


    CREATE  TRIGGER T_表一 ON [dbo].[表一] 
    for INSERT    --FOR UPDATE
    AS
    insert into 表三 select case when ID1<>'' then ID1 else  ID2 end,name1,
    left(date,4)+'-'+substring(date,5,2)+'-'+substring(date,7,2)+
    ' '+substring (date,9,2)+':'+substring (date,11,2)+':'+substring (date,13,2)+':'
    +right(date,1)  
    CREATE  TRIGGER T_表二 ON [dbo].[表二] 
    for INSERT    --FOR UPDATE
    AS
    insert into 表三 select case when ID1<>'' then ID1 else  ID2 end,name1,
    left(date,4)+'-'+substring(date,5,2)+'-'+substring(date,7,2)+
    ' '+substring (date,9,2)+':'+substring (date,11,2)+':'+substring (date,13,2)+':'
    +right(date,1)  
      

  4.   


    CREATE  TRIGGER T_表一 ON [dbo].[表一] 
    for INSERT    --FOR UPDATE
    AS
    insert into 表三 select case when ID1<>'' then ID1 else  ID2 end,name1,
    left(date,4)+'-'+substring(date,5,2)+'-'+substring(date,7,2)+
    ' '+substring (date,9,2)+':'+substring (date,11,2)+':'+substring (date,13,2)+':'
    +right(date,1)  from inserted
    CREATE  TRIGGER T_表二 ON [dbo].[表二] 
    for INSERT    --FOR UPDATE
    AS
    insert into 表三 select case when ID1<>'' then ID1 else  ID2 end,name1,
    left(date,4)+'-'+substring(date,5,2)+'-'+substring(date,7,2)+
    ' '+substring (date,9,2)+':'+substring (date,11,2)+':'+substring (date,13,2)+':'
    +right(date,1)  from inserted
      

  5.   

    呵呵,楼上正解我把from inserted忘了
      

  6.   

    呵呵,楼上正解我把from inserted忘了
      

  7.   

    第二个触发器是要当表二有数据插入后 修改 表三的date字段 好像不对啊
      

  8.   

    CREATE  TRIGGER T_表一 ON [dbo].[表一] 
    for INSERT    --FOR UPDATE
    AS
    insert into 表三 select case when ID1<>'' then ID1 else  ID2 end,name1,
    left(date,4)+'-'+substring(date,5,2)+'-'+substring(date,7,2)+
    ' '+substring (date,9,2)+':'+substring (date,11,2)+':'+substring (date,13,2)+':'
    +right(date,1)  from inserted
    CREATE  TRIGGER T_表二 ON [dbo].[表二] 
    for INSERT    --FOR UPDATE
    AS
    update 表三 set date=left(a.date,4)+'-'+substring(a.date,5,2)+'-'+substring(a.date,7,2)+' '+substring (a.date,9,2)+':'+substring (a.date,11,2)+':'+substring (a.date,13,2)+':'+right(a.date,1)  from inserted a where ID=case when a.ID1<>'' then a.ID1 else  a.ID2 end and name=a.name1
      

  9.   

    或者CREATE  TRIGGER T_表二 ON [dbo].[表二] 
    for INSERT    --FOR UPDATE
    AS
    update 表三 set date=left(a.date,4)+'-'+substring(a.date,5,2)+'-'+substring(a.date,7,2)+' '+substring (a.date,9,2)+':'+substring (a.date,11,2)+':'+substring (a.date,13,2)+':'+right(a.date,1)  from inserted a where (ID=a.ID1 or ID=a.ID2 )and name=a.name1