MYSQL在每次调用时切换枚举值

时间:2014-11-10 12:59:20

标签: mysql sql

我希望这是这样的。

我有一个ENUM列,其中0和1,我希望在每个查询中切换这两个值。

UPDATE settings
SET state = 1 IF state = 0 
              ELSE IF state = 0 
                   SET STATE = 1 WHERE id = '$id';

我尝试了这个,但它使列空了。

UPDATE settings SET state = IF(state=1, 0, 1) 

感谢。

2 个答案:

答案 0 :(得分:2)

我不喜欢various reasonsenum。特别是当您使用它来存储01时,它可能会令人困惑,是的,甚至容易出错。

使用tinyint,它更容易使用,更易读。

mysql> create table switch(state tinyint default 0);

mysql> insert into switch values (0);

mysql> select * from switch;
+-------+
| state |
+-------+
|     0 |
+-------+

mysql> update switch set state = not state; /*simple as that :)*/

mysql> select * from switch;
+-------+
| state |
+-------+
|     1 |
+-------+

mysql> update switch set state = not state;

mysql> select * from switch;
+-------+
| state |
+-------+
|     0 |
+-------+

答案 1 :(得分:0)

你也可以使用简单的 if 语句:

mysql > UPDATE switch SET state=if(state=0,1,0);