请高手指点怎么解决以下错误,谢谢!
CREATE TRIGGER PURTDMO ON PURTD
AFTER UPDATE,INSERT,DELETE AS
BEGIN
SET NOCOUNT ON
UPDATE PURTD
SET TD014=k.TB012
FROM INSERTED T,PURTD A,PURTB K,PURTR M
WHERE T.TD001=A.TD001
AND T.TD002=A.TD002
AND T.TD003=A.TD003
AND K.TB001=M.TR001
AND K.TB002=M.TR002
AND K.TB003=M.TR003
AND T.TD001=SUBSTRING(TR019,1,4)
AND T.TD002=SUBSTRING(TR019,6,11)
AND T.TD003=SUBSTRING(TR019,18,4)
AND T.TD004=K.TB004
SET NOCOUNT OFF
END错误:消息 4104,级别 16,状态 1,过程 PURTDMO,第 6 行
无法绑定由多个部分组成的标识符 "k.TB012"。
SELECT A.TD001,A.TD002,A.TD003,K.TB012+'---'+K.TB030 TD014 FROM PURTD A,PURTB K,PURTR M
WHERE K.TB001=M.TR001
AND K.TB002=M.TR002
AND K.TB003=M.TR003
AND A.TD001=SUBSTRING(TR019,1,4)
AND A.TD002=SUBSTRING(TR019,6,11)
AND A.TD003=SUBSTRING(TR019,18,4)显示结果:
TD001 TD002          TD003       TD014
3301 20110700086 0001 FO:0366---FO:0366/11 
3301 20110700079 0001 FO:0366---FO:0366/11 
3301 20110700079 0002 FO:0366---FO:0366/11 
3301 20110700292 0002 ---           
3301 20110700292 0003 ---           
3301 20110700296 0002 ---           
3301 20110700294 0003 ---           
3301 20110700294 0006 ---           
3301 20110700294 0008 ---           
3301 20110700295 0003 ---           
3301 20110700016 0001 FO:0457/0382/0286---           
3301 20110700016 0002 FO:0457/0382/0286---           
3301 20110700016 0003 FO:0435---FO:0435/11 
3301 20110700015 0001 FO:0427/0440---           
3301 20110700015 0003 FO:0427/0440---           
3301 20110700015 0005 FO:0457/0382/0286---           
3301 20110700015 0006 FO:0457/0382/0286---           
3301 20110700015 0007 FO:0435---FO:0435/11 
3301 20110700015 0008 FO:0435---FO:0435/11 
3301 20110700015 0002 FO:0427/0440---           
3301 20110700015 0004 FO:0427/0440---           
3301 20110700147 0002 FO:0487/0431/0479---FO:0487/11 

解决方案 »

  1.   

    UPDATE PURTD
    SET ?.TD014=k.TB012
    FROM INSERTED T,PURTD A,PURTB K,PURTR M
    WHERE T.TD001=A.TD001
    AND T.TD002=A.TD002
    AND T.TD003=A.TD003
    AND K.TB001=M.TR001
    AND K.TB002=M.TR002
    AND K.TB003=M.TR003
    AND T.TD001=SUBSTRING(?.TR019,1,4)
    AND T.TD002=SUBSTRING(?.TR019,6,11)
    AND T.TD003=SUBSTRING(?.TR019,18,4)
    AND T.TD004=K.TB004如果楼主的排序方式是指定大小写,那么就写成 K.TB012 试试!另外楼主不要重复发帖!虽然马甲不同
      

  2.   

    AFTER UPDATE,INSERT,DELETE AS
    --这个有点叼诶?
      

  3.   

    CREATE TRIGGER PURTDMO ON PURTD
    AFTER UPDATE,INSERT,DELETE AS
    BEGIN
    SET NOCOUNT ON
    UPDATE A
    SET TD014=k.TB012
    FROM PURTD A,INSERTED T,PURTB K,PURTR M
    WHERE T.TD001=A.TD001
    AND T.TD002=A.TD002
    AND T.TD003=A.TD003
    AND K.TB001=M.TR001
    AND K.TB002=M.TR002
    AND K.TB003=M.TR003
    AND T.TD001=SUBSTRING(TR019,1,4)
    AND T.TD002=SUBSTRING(TR019,6,11)
    AND T.TD003=SUBSTRING(TR019,18,4)
    AND T.TD004=K.TB004
    SET NOCOUNT OFF
    END
      

  4.   

    CREATE TRIGGER PURTDMO ON PURTD
    AFTER UPDATE,INSERT,DELETE AS
    BEGIN
    SET NOCOUNT ON
    UPDATE A
    SET A.TD014=k.TB012+'---'+K.TB030
    FROM INSERTED T,PURTD A,PURTB K,PURTR M
    WHERE T.TD001=A.TD001
    AND T.TD002=A.TD002
    AND T.TD003=A.TD003
    AND K.TB001=M.TR001
    AND K.TB002=M.TR002
    AND K.TB003=M.TR003
    AND T.TD001=SUBSTRING(M.TR019,1,4)
    AND T.TD002=SUBSTRING(M.TR019,6,11)
    AND T.TD003=SUBSTRING(M.TR019,18,4)
    AND T.TD004=K.TB004
    SET NOCOUNT OFF
    END还是一样的报错:
    消息 4104,级别 16,状态 1,过程 PURTDMO,第 6 行
    无法绑定由多个部分组成的标识符 "k.TB012"。
      

  5.   

    --执行一下下面的语句,把结果贴上来
    SELECT A.TD001,A.TD002,A.TD003,K.TB012+'---'+K.TB030 TD014 FROM PURTD A,PURTB K,PURTR M
    WHERE K.TB001=M.TR001
    AND K.TB002=M.TR002
    AND K.TB003=M.TR003
    AND A.TD001=SUBSTRING(TR019,1,4)
    AND A.TD002=SUBSTRING(TR019,6,11)
    AND A.TD003=SUBSTRING(TR019,18,4)
    AND A.TD004=K.TB004