记录状态更新:一个记录将处于活动状态,其他所有记录将不活动。

3

我在数据库表中有一个enum('Y','N')字段,其中许多记录保存了记录的状态,活动(Y)或非活动(N)。

一次只能有一个记录处于活动状态。提供一个接口来显示所有记录及其状态,如果是活动状态,则显示单词Active,如果是非活动状态,则提供提交按钮以使其处于活动状态。

现在我正在使用两个更新命令进行操作。

update table_name set active="Y" where id=$id
update table_name set active="N" where id != $id

我的问题是:

我是否需要执行两个更新命令,还是有一种更新命令可以同时更新它们?

2个回答

3
您可以做以下事情。
 UPDATE table_name
    SET active = 
        CASE WHEN id = $id THEN "Y"
             ELSE "N"
        END

请确认语法是否正确 - 我并没有实际尝试这段代码。


3
UPDATE  table_name
SET     active = IF(id = $id, 'Y', 'N')
WHERE   (id = $id) OR (active = 'Y')

这将使用 idactive 上的索引。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接