gpt4 book ai didi

MySQL 设置了一个规则,确保两列中只有一列可以填充值

转载 作者:可可西里 更新时间:2023-11-01 08:35:31 27 4
gpt4 key购买 nike

有什么方法可以在 MySQL 数据库中设置“规则”/索引,所以如果我们有两列:Cancelled 和 Claimed,那么只有其中一个可以填充值。

那么如果我们将 cancel 设置为 1,那么 claimed 就不能为 1 并且如果是其他方式则相同?

最佳答案

此处推荐的解决方案是更改架构,使其具有一个列,其状态为cancelledclaimed如果这些是非 NULL bool 列,因此只有 2 种可能的状态。

您可以使用 BEFORE UPDATE 触发器来做您想做的事,但这似乎是在已经过于复杂的架构上增加了额外的复杂性。

类似下面的内容,虽然语法可能需要改进,因为我不经常触发 UPDATE:

CREATE TRIGGER `trg_status` BEFORE UPDATE ON your_table
FOR EACH ROW
BEGIN
/* If the claimed was set to 1, set cancelled to 0 */
IF OLD.cancelled = 1 AND NEW.claimed = 1 THEN
SET NEW.cancelled = 0;
/* Or the opposite.... */
ELSEIF OLD.claimed = 1 AND NEW.cancelled = 1 THEN
SET NEW.claimed = 0;
END IF
END

关于MySQL 设置了一个规则,确保两列中只有一列可以填充值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14085356/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com