gpt4 book ai didi

根据许多 int (0/1) 更新 varchar 的 MySQL 触发器

转载 作者:行者123 更新时间:2023-11-29 02:40:21 25 4
gpt4 key购买 nike

我有一个这样的标签

+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| _id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| kategori | varchar(50) | NO | | NULL | |
| GR | int(1) | NO | | NULL | |
| WW | int(1) | NO | | NULL | |
| FS | int(1) | NO | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+

每次 GRWWFS 更改时,我都想更新 Kategori

如果 GRWWFS1,则值应为 GR、WW , FS类别

IF GR=1, WW=0FS=1 值应该是 GR, FS对于类别等等。

我无法获得有效的触发器。

最佳答案

下面的触发器应该可以解决问题。

它在表上运行 before update 并且,如果没有为 kategory 字段提供值,则检查 GR 的值,WW, 和 FS 来设置它。

触发器认识到这样一个事实,即 UPDATE 可能会在未设置所有 3 个字段的情况下发生:在这种情况下,它会在数据库中查找字段的现有值。这应该允许 kategori 在这种情况下与数据保持同步。

delimiter $$
CREATE TRIGGER updateMyTable
BEFORE UPDATE ON my_table
FOR EACH ROW
BEGIN
IF NEW.kategori IS NULL THEN
IF COALESCE(NEW.GR, OLD.GR) = 1 THEN
SET NEW.kategori = IF( NEW.kategori IS NULL, 'GR', CONCAT(NEW.kategori, ',', 'GR') );
END IF;
IF COALESCE(NEW.WW, OLD.WW) = 1 THEN
SET NEW.kategori = IF( NEW.kategori IS NULL, 'WW', CONCAT(NEW.kategori, ',', 'WW') );
END IF;
IF COALESCE(NEW.FS, OLD.FS) = 1 THEN
SET NEW.kategori = IF( NEW.kategori IS NULL, 'FS', CONCAT(NEW.kategori, ',', 'FS') );
END IF;
END IF;
END$$
delimiter ;

关于根据许多 int (0/1) 更新 varchar 的 MySQL 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53947154/

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