1

私は、ある場所のために別の場所で書かれたコードを使用していますが、これが問題の始まりだと思います。

私の理想的には変更不可能な既存のコードでは、次のようなクエリがあります。

SELECT username FROM users

ただし、新しいデータベースにはユーザー名フィールドはありませんが、電子メール アドレスはあります。

ユーザー名を尋ねたときにメールが返ってくるように、新しいデータベースを何らかの方法で変更したいと思います。

新しいフィールドを作成し、電子メールが更新されたときに手動で入力できることは理解していますが、両方のコードベースが変更なしで機能するように、ある種のエイリアスが本当に必要です。

これは可能ですか?

4

3 に答える 3

5

ビューを作成できます:

CREATE VIEW v_users AS
SELECT email AS username
FROM users

これは 1 つのテーブルにすぎないため、クエリだけでなく更新や挿入にも使用できます (比較的新しいバージョンの 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 に答える