这个触发器执行不了,请指点下?
create trigger [a421_inseret] on [dbo].[a421] for insert
as
declare @a4214 int,@a4212 int
set @a4214=(select a4214 from inserted)
set @a4212=(select a4212 from inserted)
if (@a4214 is null or @a4214 ='')
BEGIN
update a01 set e0101=c.4213 from (select a421.bdyy,a421.qysj,a421.a4211,a421.a4212,a421.a4213,a421.a4214,a421.TransactionID,a0188,RY.signtime from a421,RY
where a421.TransactionID=RY.TransactionID)c,inserted,a01
where a01.a0188=c.a0188
end
if (@a4212 is null or @a4212 ='')
BEGIN
update a01 set dept_code=c.4211 from (select a421.bdyy,a421.qysj,a421.a4211,a421.a4212,a421.a4213,a421.a4214,a421.TransactionID,a0188 ,RY.signtime from a421,dbo.RY
where a421.TransactionID=RY.TransactionID) c,inserted,a01 where a01.a0188=c.a0188
end

解决方案 »

  1.   

    c.4213 
    c.4211 
    是不是少了個a ?
      

  2.   

    另外,2句update語句,沒用到inserted ???
      

  3.   

    update a01 set e0101=c.4213 from (select a421.bdyy,a421.qysj,a421.a4211,a421.a4212,a421.a4213,a421.a4214,a421.TransactionID,a0188,RY.signtime from a421,RY 
    where a421.TransactionID=RY.TransactionID)c,inserted,a01 
    where a01.a0188=c.a0188 你这块的子查询是c,inserted,a01 ,但是连接只用到a01.a0188=c.a0188 ,和inserted的连接呢?另外
    set @a4214=(select a4214 from inserted) 也不合理,如果inserted里面有多个数据的话,你的@a4214只能取最后一个值
      

  4.   

    --楼主写的太乱,优化一下。
    create trigger [a421_inseret] on [dbo].[a421] for insert 
    as 
    -- declare @a4214 int,@a4212 int 
    -- set @a4214=(select a4214 from inserted) 
    -- set @a4212=(select a4212 from inserted) 
    -- if (@a4214 is null or @a4214 ='') 
    BEGIN 
    update a01 set e0101=b.a4213 
    from a01 a  
    inner join RY c on a.a0188=c.a0188 
    inner join a421 b on b.TransactionID=c.TransactionID
    inner join inserted d on b.主键=d.主键
    where isnull(d.a4214,'')=''update a01 set dept_code=b.a4211
    from a01 a  
    inner join RY c on a.a0188=c.a0188 
    inner join a421 b on b.TransactionID=c.TransactionID
    inner join inserted d on b.主键=d.主键
    where isnull(d.a4212,'')=''end
      

  5.   

    本帖最后由 libin_ftsafe 于 2009-03-27 12:53:39 编辑
      

  6.   

    set @a4214=(select a4214 from inserted) 
    set @a4212=(select a4212 from inserted)
    这两句的问题上面已经说过,后面加一个where吧 if (@a4214 is null or @a4214 ='') 
    if (@a4212 is null or @a4212 ='') 
    这个变量是int型的,楼主你这样判断是不行的把出错的语句贴出来,大家也好帮你看
      

  7.   

    有点乱的感觉,建议老土一点 AS 后用 BEGIN...END括起来,还有字段名称为数字感觉比较乱...呵呵