我正在使用一些代码写入另一个代码,我想这是我问题的开始。
在我理想上不可更改的现有代码中,我有一个类似的查询:
SELECT username FROM users
但是,在新数据库中,没有用户名字段,但有一个电子邮件地址。
我想以某种方式更改新数据库,以便在我要求用户名时收到电子邮件。
我知道我可以创建一个新字段并在电子邮件更新时手动填充它,但我真的很喜欢某种别名,这样两个代码库都可以不加修改地工作。
这可能吗?
答案 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
答案 2 :(得分:0)
不幸的是,MySQL不支持Computed Columns。 我在搜索这个问题时发现了一些解决方法,但你最好只是复制值,或使用自动更新它的触发器。