有一张表,表里的触发器有一段是根据if条件操作的,但这个条件却是动态的,是从别的表取过来的,比如,可以是>20,也可以是<50,现在就是不知道这种动态的条件弄成参数后要怎么处理,请各位高手赐教

解决方案 »

  1.   

    例如:
    表1
    ID   条件
     1    >20
    表2
    ID    S
     1    10触发器在表2上,现在从表1取出两边ID相等的条件,然后再用S与条件进行比较,结果符合的话再进行下一步,也就是说这里要判断10>20这个条件,但就是不会处理>20这个条件
      

  2.   

    怎么处理
    SELECT *,IF(B1.S>B2.S,你的处理,B1.S) FROM B1 INNER JOIN B2 ON B1.ID=B2.ID
      

  3.   

    楼上还是没理解我的意思,我的意思是包括那个“>”也是动态的,也就是说,它可能是“>”,也可能是“<”,或者其他的
      

  4.   

    那就全部设置为 > 不就行了,反正是随机的。或者楼主给出什么时候是> 什么时候是 <
    明确定义后计算机才能实现。
      

  5.   

    假设ID唯一,lsb为保存比较结果的表,VALUE为字段
    trubcate lsb
    SELECT concat('insert into lsb values (',b2.S,条件,')') FROM B1 INNER JOIN B2 ON B1.ID=B2.ID;
    prepare stml from @aa;
    execute stml;
    打开LSB 判断值or
    SELECT concat('select ',b2.S,条件,' into @bb') into @aa FROM B1 INNER JOIN B2 ON B1.ID=B2.ID;
    prepare stml from @aa;
    execute stml;
    select @bb;
      

  6.   

    SELECT concat('select ',b2.S,条件,' into @bb') into @aa FROM B1 INNER JOIN B2 ON B1.ID=B2.ID;
     prepare stml from @aa;
     execute stml;
     select @bb;
    执行的结果是什么
      

  7.   

    触发器如下(在table1上):
    BEGIN
      DECLARE aa VARCHAR(20);
      SET aa = concat(10, new.s); 
      IF aa THEN
        INSERT INTO table2 VALUES (new.s, 1);
      ELSE
        INSERT INTO table2 VALUES (new.s, 0);
      END IF;
    END执行后结果如下
    table1:table2:
      

  8.   

    不知道你仔细看过别人的回复没有
    你只是赋值,执行没有?
    SET aa = concat('select ',10, new.s,' into @bb'); 
     prepare stml from @aa;
      execute stml;
      select @bb;
    if @bb=1 then
    ....
    else
    ...
    end if;
      

  9.   

    将SELECT @BB去掉,如果你是在TRIGGER中
      

  10.   

    SET aa = concat(10, new.s); 这个10是怎么来的? 
      

  11.   

    不好意思,开始看错了
    但是这个还是有个问题,触发器里是不能执行动态sql语句的吧
      

  12.   

    不支持,在TRIGGER中无法实现,用SP,思路如上述