表a有两个字段mno bigint,mname varchar
表b有两个字段mno bigint,mname varchar
实现对表a更新时,表b也随着更新
我编写的触发器mno字段没有问题,但mname只能更新数字字符串并且表b的mname字段只能取得数字字符串的第一位数
例如: 如果表a的字段manme更新为981,则表b的相应字段mname中能更新为9  
不知是啥原因
CREATE TRIGGER abUP on dbo.a
FOR  UPDATe
AS
declare @omnoh bigint,@omnameh varchar
declare @nmnoh bigint , @nmnameh varchar
select @omnoh=deleted.mno,@omnameh=deleted.mname   from deleted
select @nmnoh=inserted.mno,@nmnameh=inserted.mname from inserted
update b set b.mname=@nmnameh ,b.mno=@nmnoh where  b.mno=@omnoh 

解决方案 »

  1.   

    try--
    CREATE TRIGGER abUP on dbo.a 
    FOR  UPDATe 
    AS 
    declare @omnoh bigint,@omnameh varchar(50) 
    declare @nmnoh bigint , @nmnameh varchar(50) 
    select @omnoh=deleted.mno,@omnameh=deleted.mname  from deleted 
    select @nmnoh=inserted.mno,@nmnameh=inserted.mname from inserted 
    update b set b.mname=@nmnameh ,b.mno=@nmnoh where  b.mno=@omnoh
      

  2.   

    给varchar 指定相同的长度。
      

  3.   

    declare @s1 varchar
    set  @s1='abc'declare @s2 varchar(10)
    set  @s2='abc'select @s1 as s1,@s2 as s2/**
    s1   s2         
    ---- ---------- 
    a    abc(所影响的行数为 1 行)
    **/
    看了这个你就明白了