我有一个像这样的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