1

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

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

SELECT username FROM users

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

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

我知道我可以创建一个新字段并在电子邮件更新时手动填充它,但我真的很想要某种别名,以便两个代码库都可以在不修改的情况下工作。

这可能吗?

4

3 回答 3

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
于 2013-01-07T14:52:46.037 回答
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

于 2013-01-07T14:53:42.407 回答
0

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

于 2013-01-07T14:53:13.943 回答