是否可以使MYSQL字段始终等于另一个?

时间:2013-01-07 14:50:37

标签: mysql sql

我正在使用一些代码写入另一个代码,我想这是我问题的开始。

在我理想上不可更改的现有代码中,我有一个类似的查询:

SELECT username FROM users

但是,在新数据库中,没有用户名字段,但有一个电子邮件地址。

我想以某种方式更改新数据库,以便在我要求用户名时收到电子邮件。

我知道我可以创建一个新字段并在电子邮件更新时手动填充它,但我真的很喜欢某种别名,这样两个代码库都可以不加修改地工作。

这可能吗?

3 个答案:

答案 0 :(得分:5)

您可以创建一个视图:

CREATE VIEW v_users AS
SELECT email AS username
FROM users

由于这仅仅是一个表,您甚至可以将它用于更新和插入以及查询(如果您使用的是相对较新版本的MySQL)

您甚至可以在单独的数据库中创建所有视图 - 这样它们可以与原始表格具有相同的名称:

CREATE VIEW db2.users AS
SELECT email AS username
FROM db1.users

答案 1 :(得分:4)

您可以添加username字段并通过触发器使其与电子邮件地址保持一致,也可以使用users表的视图。

触发器:http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html

观点:http://dev.mysql.com/doc/refman/5.5/en/create-view.html

答案 2 :(得分:0)

不幸的是,MySQL不支持Computed Columns。 我在搜索这个问题时发现了一些解决方法,但你最好只是复制值,或使用自动更新它的触发器。