从未调用MySQL触发器代码

时间:2017-09-13 02:57:17

标签: mysql entity-attribute-value

我有一个像这样的MySQL表

 ID    USER_ID   FIELD_ID    VALUE
 1        1         1          0
 2        1         2          2
 3        1         3          0<----- USER ID 0 
 .        .         .          .
 .        .         .          .
 .        .         .          .
 40       20        1          6
 41       20        2          3
 42       20        3          1<------ USER ID 1 
 .        .        .          .
 .        .         .          .
 .        .         .          .
 73       34        1          9
 74       34        2          6
 75       34        3          20<----- user ID 20
 .        .         .          .
 .        .         .          .
 .        .         .          .

上面的field_id#3包含&#34; 0&#34;或其他用户的ID。

我试图写一个运行BEFORE UPDATE的MYSQL触发器,这样如果用户&#34; A&#34;将用户B的ID写入field_id#3,如果用户&#34; B&#34; field_id#3不是&#34; 0&#34;然后写&#34; 0&#34;进入用户&#34; A&#34; field_id#3。

所以触发器的伪代码基本上是:

  if (B["field_id3"]!="0") THEN
      A["field_id3"]="0";

MYSQL触发器代码如下,但它没有做任何事情,没有语法错误,但它不起作用,任何人都可以帮忙吗?

 BEGIN
   IF (NEW.FIELD_ID='3') THEN

     IF (EXISTS(SELECT USER_ID,FIELD_ID,VALUE FROM table WHERE USER_ID=NEW.VALUE)) THEN 

          IF (FIELD_ID='3' AND VALUE!='0') THEN
             SET NEW.VALUE='0'; # <<---NEVER GETS CALLED
          END IF;

     END IF;

  END IF;
 END

0 个答案:

没有答案