我在数据库结构方面遇到了一些困难。 我有一个CMS和一个程序,都可以从我的表中更新/选择东西"用户"。 该程序是封闭源代码,因此我无法更改任何查询。 CMS也是某种类型的“锁定”,它包含某些类和函数,所有这些都在列冠上。
以下是我遇到问题的2列:
user_data_currency
和crowns
,都适用于某种"信用"。
该程序使用user_data_currency,CMS使用冠。
所以问题是,如果有人获得一些积分,CMS将更新冠表,但我的程序正在跟踪user_data_currency。
我想"链接"那两个柱子。我希望克朗成为主要的专栏。
因此,如果我的程序选择了user_data_currency,我想显示crowns列的值。
抱歉我的英语不好,我住在荷兰。
答案 0 :(得分:0)
1-对于将来的更新,我认为您可以在users
表中添加触发器。跟踪CMS或程序是否更新了crowns
或user_data_currency
,然后让mysql为旧记录带来更新:
DELIMITER ;;
CREATE TRIGGER updateDualCrownsUDC BEFORE UPDATE ON users FOR EACH ROW
IF OLD.crowns <> NEW.user_data_currency THEN
SET OLD.crowns = NEW.user_data_currency;
END IF;;
IF OLD.user_data_currency <> NEW.crowns THEN
SET OLD.user_data_currency = NEW.crowns;
END IF;;
DELIMITER ;
2-对于旧记录,您需要通过将crowns
作为主列
UPDATE users SET crowns = user_data_currency WHERE crowns IS NULL;
UPDATE users SET user_data_currency = crowns WHERE user_data_currency <> crowns;
注意:首先备份数据以避免错误操作。