同一服务器上的两个数据库
数据库SQLDB1 : 表 t_userinfo 字段mobile(11个字符),username,delflag
数据库SQLDB2 : 表 t_msg  字段mbno,Msg,readed(默认0)想在t_msg表中插入数据时,t_userinfo表中的delflag字段值变为N  ,代码如下:CREATE TRIGGER tri_ccc
ON   t_msg 
FOR insert
AS  
IF EXISTS(SELECT Mbno  FROM  t2  WHERE readed = '0' and  LEFT(REPLACE(Msg, CHAR(32), ''), 2) = 'HA' ) 
begin
UPDATE u  set  u.delflag ='N' from  SQLDB1..t_UserInfo u , t_msg m  where  m.readed = '0'  and u.Mobile= RIGHT(m.Mbno,11)
UPDATE m set m.readed = '1',m.webname='whz'  from t_msg m  where m.readed = '0'
end用手动在t_msg表中加一条数据时,上述功能可以实现,但外界程序向t_msg表插入数据时,无法写入数据。给这个触发器删除后,外界程序就可以写入数据。
请高手朋友帮看一下,谢谢

解决方案 »

  1.   

    CREATE TRIGGER tri_ccc
    ON t_msg  
    FOR insert
    AS   
    IF EXISTS(SELECT Mbno FROM t_msg  WHERE readed = '0' and LEFT(REPLACE(Msg, CHAR(32), ''), 2) = 'HA' )  
    begin
    UPDATE u set u.delflag ='N' from SQLDB1..t_UserInfo u , t_msg m where m.readed = '0' and u.Mobile= RIGHT(m.Mbno,11)
    UPDATE m set m.readed = '1',m.webname='whz' from t_msg m where m.readed = '0'
    end上面的代码是这个,我COPY上来时改错了
      

  2.   

    使用外界程序使用的那个数据库用户登录查询分析器,写一条insert语句插入数据是否可以成功?
      

  3.   

    触发器应该是SQL自身处理的问题吧,难道触发器阻止写入吗?