gpt4 book ai didi

mysql - 如何更新一个表的两列,其中第二列将更新为第一列的值?

转载 作者:行者123 更新时间:2023-11-29 18:39:35 27 4
gpt4 key购买 nike

如果我有两列电话 ID,电话和地址,其中电话 ID 为 id-column。现在我需要用当前时间更新电话列(取当前时间的4位数字)+添加现有的电话值;如果电话列更改,则地址值也会更改,因为地址的 4 位数字是电话。这个怎么做 ??

Phoneid  Phone  Address
1 123 123newdelhi10091

更新后

Phoneid  Phone              Address
1 (123+4467)4590 4590newdelhi110091

最佳答案

通常,这种类型的行为将被视为业务逻辑,因此它将在连接到数据库的任何程序中完成。如果这不是一个选择,有几种方法可以解决。

首先,您可以创建一个触发器,它基本上会在另一个值发生变化时自动更改一个值:

DELIMITER //
CREATE TRIGGER phone_update BEFORE UPDATE ON phone
FOR EACH ROW
BEGIN
SET NEW.Address = CONCAT(NEW.Phone, SUBSTRING(OLD.Address, LENGTH(Old.Phone);
END;//

触发器通常是违反直觉的并且难以调试。此外, future 的开发人员可能不会想到触发器。如果可以的话,我通常不会是粉丝。

您的另一种方法是使用 View :

CREATE VIEW phone_address_view AS (
SELECT phoneid, phone, CONCAT(phone, address) as `address` FROM phone
);

View 的好处是您将始终拥有一致的数据。您可以将实际地址插入数据库,然后在查询时会收到修改后的信息。

另一方面,您现在从与插入和更新不同的位置进行选择。 View 还因比原始表慢而闻名。

关于mysql - 如何更新一个表的两列,其中第二列将更新为第一列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45038689/

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