1

質問:

PERSONユーザーのビューjackをいくつかのメインの人物テーブルに向ける方法はありますか?それを呼び出して、ユーザーMAIN_PERSONのビューを作成し、同じテーブルを指すようにします。違いは、たとえば、男性のみにアクセスできることです、女性のみアクセスできます。PERSONjillMAIN_PERSONjackjill

詳細:

テーブル/ビューを設定する方法は次のとおりです

PERSON テーブル:

CREATE TABLE IF NOT EXISTS person
(
   id            INT NOT NULL auto_increment,
   male          BOOLEAN,

   PRIMARY KEY(id)
)
engine=innodb;

ジャックの表示:

CREATE VIEW person_for_jacks_eyes_only
AS
SELECT * FROM person
WHERE
person.male = TRUE;

ジルの表示:

CREATE VIEW person_for_jills_eyes_only
AS
SELECT * FROM person
WHERE
person.male = false;

ユーザーを作成して権限を付与します。

GRANT SELECT ON DB.person_for_jacks_eyes_only TO jack@'localhost' IDENTIFIED BY '1234';
GRANT SELECT ON DB.person_for_jills_eyes_only TO jill@'localhost' IDENTIFIED BY '1234';

動機:

複数のユーザーに行のサブセットのみへのアクセスを許可したいと考えています。私の理解では、これはビューの目的の 1 つです (もう 1 つは、複数のテーブルを結合することです)。ただし、のようなあいまいなビュー名を付けたくないperson_for_jacks_eyes_onlyので、ユーザー固有localの名前を付けたいのです。これがビューの間違った使用方法である場合は、誰かが私を正しい方向に向けてください。

4

1 に答える 1

2

いいえ、ありません。テーブルとビューには単一のグローバル名前空間があります。同じ名前で複数のビューを作成する方法はありません。

ただし、出力が現在のユーザーに依存するビューを宣言できると思います。

CREATE VIEW limited_person AS
    SELECT * FROM person
    WHERE person.male = (USER() = 'jack@localhost')
于 2012-04-30T01:02:54.180 に答える