create trigger trig_a
on 表A
for insert 
as
if exists (select top 1 * from inserted)
begin
insert into 表B(字段aa,字段bb,字段cc) select 字段a,字段b,字段b+right(字段b,1) from insertedendgo

解决方案 »

  1.   

    不用插入C,我马上试试,谢谢hdhai9451
      

  2.   

    呵呵,上面兄弟的方法不错,不过没考虑字符长度,中文的话要考虑一个中文字符是两位,英文还麻烦点,要考虑到断字符号。楼主应该是用中文,只要把right(字段b,1) 改成right(字段b,2) 
    create trigger trig_a
    on 表A
    for insert 
    as
    if exists (select top 1 * from inserted)
    begin
    insert into 表B(字段aa,字段bb,字段cc) select 字段a,字段b,字段b+right(字段b,2) from insertedendgo
      

  3.   

    to: adaizi1980(阿代) 
    你不懂就不要亂說﹐你試過了沒有﹖declare @s varchar(10)
    set @s='張三'
    print @s+right(@s,1)結果﹕張三三
      

  4.   

    确实有点问题:
       我如果发送“徐六”,表B.字段BB的写入值也是“徐六”,而“表C.字段bbb”没有“徐六”,应该是不写入。
      

  5.   

    我在我的機子上測試沒總理﹐是不是前后有空格﹖你試這樣寫
    insert into 表B(字段aa,字段bb,字段cc) select 字段a,字段b,字段b+right(Rtrim(字段b),1) from inserted
      

  6.   

    返回的还是“字段b”的值,而不是"字段ccc"的值
      

  7.   

    兄弟,如果不想跟hdhai9451(※★開拓者...前進☆※) 一一核对你们的系统环境配置的话,还是试试
    insert into 表B(字段aa,字段bb,字段cc) select 字段a,字段b,字段b+right(Rtrim(字段b),2) from inserted吧,应该没问题的
    谢谢hdhai9451(※★開拓者...前進☆※) 提醒兄弟压缩空格
      

  8.   

    adaizi1980:你好
       我用“right(Rtrim(字段b),2)”结果还是返回的“张三”。
      

  9.   

    在我的機子這樣寫right(Rtrim(字段b),2)不行,樓主要自己的機子上試試declare @s varchar(10)
    set @s='張三'
    print @s+right(@s,1)
    print @s+right(@s,2)看看結果返回什么﹖
      

  10.   

    CREATE TRIGGER trig_a ON table_a 
    FOR INSERT 
    AS
    if exists (select top 1 * from inserted)
    begin
    insert table_b(aa,bb,cc) select a,b,rtrim(b)+right(rtrim(b),1) from inserted
    end
    照上面的朋友写的东西做点改进,这样写总可以吧?
      

  11.   

    不好意思,可能是我表述不清楚,我的意思是:
    想达到如下效果:
              在[表A]中增加一条记录时,如果插入的记录[字段b]值为“张三”,如果在[表C.字段bbb]中能找到“张三”则插入一条新记录到表B,要求[表B.字段BB]的值要为“张三三”即[表C.字段ccc]的值,如果[表C.字段bbb]中值没有是“张三”的,就不用插入了。
      

  12.   

    那就這樣寫create trigger trig_a
    on 表A
    for insert 
    as
    if exists (select top 1 * from inserted)
    begin
    insert into 表B(字段aa,字段bb,字段cc) select 字段a,字段b,字段b+right(字段b,1) from insertedinsert into 表C(字段aaa,字段bbb,字段ccc) select 字段a,字段b,字段b+right(字段b,1) from inserted where 字段b not in(select 字段bbb from 表C)endgo
      

  13.   

    hdhai9451,你好,是下面这样吗?现在提示语法错,我先检查一下create trigger trig_a
    on 表A
    for insert 
    as
    if exists (select top 1 * from inserted)
    begin
    insert into 表C(字段aaa,字段bbb,字段ccc) select 字段a,字段b,字段b+right(字段b,1) from inserted where 字段b not in(select 字段bbb from 表C)end
      

  14.   

    create trigger trig_a
    on 表A
    for insert 
    as
    SET NOCOUNT ON
    SET ANSI_WARNINGS OFF
    SET XACT_ABORT ON 
    --加三句試試if exists (select top 1 * from inserted)
    begin
    insert into 表C(字段aaa,字段bbb,字段ccc) select 字段a,字段b,字段b+right(字段b,1) from inserted where 字段b not in(select 字段bbb from 表C)endgo
      

  15.   

    好像是“where 字段b not in(select 字段bbb from 表C)” 找不到匹配的记录,没有执行插入语句一样。
    怎样运行都没有记录出入。
      

  16.   

    那你不用“where 字段b not in(select 字段bbb from 表C)”這句看看如何﹖
    有沒有記錄插入﹖
      

  17.   

    "那你不用“where 字段b not in(select 字段bbb from 表C)”這句看看如何﹖
    有沒有記錄插入﹖
    "
    |
    |
    有值,但是值还是[表B.字段BB]的值,不是[表C.字段bbb]的值.
      

  18.   

    create trigger trig_a
    on 表A
    for insert 
    as
    if exists (select top 1 * from inserted)
    begin
    insert into 表B(字段aa,字段bb,字段cc) select 字段a,c.bbb,c from inserted,c where inserted.a = c.aaa 
    end也没有完全了解你的意思,问题不难,理解比较费劲。
    建议你写个完整点的例子,方便大家理解!
      

  19.   

    我觉得好象应该是这样的
    create trigger trig_a
    on 表A
    for insert 
    as
    if exists (select top 1 * from inserted)
    begin
    insert into 表b(字段aaa,字段bbb,字段ccc) select 字段a,字段b,字段b+right(字段b,1) from inserted where 字段b in(select 字段bbb from 表C)end
    如果在c中能找到相同的值,就插入到表b中去.
      

  20.   

    不行的話你就給出數據來﹐插入A的什么值﹐B表的各字段結果是什么﹖C表的各字段結果是什么﹖
      

  21.   


     hdhai9451:
    在 A 中插入“张三”,C中对应的字段值不管有没有“张三”,都没有插入 B表中
      

  22.   


    我的意思是:
    ------------------------------------------------------------------------------------------
    同一库中有A、B、C三个表
              表A(字段b)| 表B(字段bb)| 表C(字段bbb、字段ccc)
                   
             想通过一触发器达到如下效果:
             例:在"表A"中增加一条记录时,插入的记录[字段b]值为“张三”,如果在[表C.字段bbb]中能找到“张三"则同时插入一条新记录到表B,要求[表B.字段BB]的值要为“张三三”即[表C.字段ccc]的值,
             如果[表C.字段bbb]中值没有是“张三”的, 就不用插入了。
      

  23.   

    to: hdhai9451(※★開拓者...前進☆※) ,你写的代码应该是下面的意思吧?create trigger trig_a
    on 表A
    for insert 
    as
    SET NOCOUNT ON
    SET ANSI_WARNINGS OFF
    SET XACT_ABORT ON 
    --加三句試試if exists (select top 1 * from inserted)
    begin
    insert into 表B(表B.字段aaa,表B.字段bbb,表B.字段ccc) select 表A.字段a,表A.字段b,表A.字段b+right(表A.字段b,1) from inserted where 表B.字段b not in(select 表C.字段bbb from 表C)endgo
    怎样使表C.字段bbb 写入:表B.字段bbb,满足这个条件问题就解决了,现在可以进行where筛选了。
      

  24.   

    //要求[表B.字段BB]的值要为“张三三”即[表C.字段ccc]的值,要求的結果就是 ﹕ 表B.字段BB=表C.字段ccc,對嗎﹖
    create trigger trig_a
    on 表A
    for insert 
    as
    SET NOCOUNT ON
    SET ANSI_WARNINGS OFF
    SET XACT_ABORT ON 
    --加三句試試if exists (select top 1 * from inserted)
    begin
    insert into 表B(字段aa,字段bb) select a.字段a,c.字段ccc from inserted a,表C c where a.字段b=c.字段bbbendgo
      

  25.   

    剛才提前回了﹗create trigger trig_a
    on 表A
    for insert 
    as
    SET NOCOUNT ON
    SET ANSI_WARNINGS OFF
    SET XACT_ABORT ON 
    --加三句試試if exists (select top 1 * from inserted)
    begin
    insert into 表B(字段aaa,字段bbb,字段ccc) select a.字段a,c.字段bbb,a.字段b+right(a.字段b,1) from inserted a ,表C c  where a.字段b not in(select 表C.字段bbb from 表C)
    insert into 表B(表B.字段aaa,表B.字段bbb,表B.字段ccc) select 表A.字段a,表C.字段bbb,表A.字段b+right(表A.字段b,1) from inserted ,表C where 表B.字段b not in(select 表C.字段bbb from 表C)endgo
      

  26.   

    可以了,谢谢 hdhai9451(※★開拓者...前進☆※) ,明早结帖。
    可以了,谢谢 hdhai9451(※★開拓者...前進☆※) ,明早结帖。
    可以了,谢谢 hdhai9451(※★開拓者...前進☆※) ,明早结帖。
    可以了,谢谢 hdhai9451(※★開拓者...前進☆※) ,明早结帖。
    可以了,谢谢 hdhai9451(※★開拓者...前進☆※) ,明早结帖。
    可以了,谢谢 hdhai9451(※★開拓者...前進☆※) ,明早结帖。
      

  27.   


    create trigger trig_a
    on 表A
    for insert 
    as
    if exists (select top 1 * from inserted)
    begin
    insert into 表B(字段aa,字段bb,字段cc) select 字段a,字段b,字段b+right(字段b,1) from insertedendgo
      

  28.   

    晚些再开一帖,致谢 hdhai9451(※★開拓者...前進☆※)