この記事では、例を使用して、MySQL ビューの一貫性を確保する方法 (チェック オプションを使用) を説明します。ご参考までに、詳細は以下の通りです。 データの一部をテーブルに表示するためのビューを作成することもあります。単純なビューは透過的であるため、ビューを通じて表示されていないデータは更新できますが、この更新によってビューの一貫性が失われます。ビューの一貫性を確保するには、ビューを作成または変更するときに、WITH CHECK OPTION 更新可能句を使用します。 WITH CHECK OPTION 更新可能句の文法構造を見てみましょう。 ビュー view_name の作成または置換 として 選択ステートメント チェックオプション付き; ビューを定義するには、SELECT ステートメントの末尾ではなく、WITH CHECK OPTION 句の末尾にセミコロン (;) を置くことに注意してください。ここで、VP マーケティングや VP セールスなど、役職が VP である従業員を表示するために、employees テーブルに基づいて vps という名前のビューを作成してみましょう。 VIEW VPS を作成または置換 選択 従業員番号、 苗字、 ファーストネーム、 役職、 拡大、 メール、 オフィスコード、 報告先 から 従業員 どこ jobTitle は '%VP%' のように動作します。 次に、次のステートメントを使用して vps ビューからデータをクエリします。 mysql> SELECT * FROM vps; +----------------+----------+-----------+---------------+------------+--------------------------+------------+------------+ | 従業員番号 | 姓 | 名 | 役職 | 内線番号 | 電子メール | オフィスコード | 報告先 | +----------------+----------+-----------+---------------+------------+--------------------------+------------+------------+ | 1056 | ヒル | メアリー | 営業担当副社長 | x4611 | [email protected] | 1 | 1002 | | 1076 | Firrelli | Jeff | マーケティング担当副社長 | x9273 | [email protected] | 1 | 1002 | +----------------+----------+-----------+---------------+------------+--------------------------+------------+------------+ 2行セット vps は単純なビューなので更新可能であり、vps ビューを通じて従業員データ情報の行を挿入します。 INSERT INTO vps(従業員番号、名、姓、役職、内線番号、電子メール、オフィスコード、報告先) 値(1703,'Lily','Bush','IT マネージャー','x9111','[email protected]',1,1002); 新しく作成された従業員は、役職が VP ではなく IT マネージャーであるため、VPS ビューでは表示されないことに注意してください。確認するには、次の SELECT ステートメントを使用します。 SELECT * FROM employees WHERE employeeNumber=1703; 上記のステートメントを実行すると、次の結果が得られます。 +----------------+-----------+------------+------------+------------+------------------------+----------+-----------------------+ | 従業員番号 | 姓 | 名 | 内線番号 | 電子メール | オフィスコード | 宛先 | 役職 | +----------------+-----------+------------+------------+------------+------------------------+----------+-----------------------+ | 1703 | ブッシュ | リリー | x9111 | [email protected] | 1 | 1002 | IT マネージャー | | 1702 | Gerard | Martin | x2312 | [email protected] | 4 | 1102 | 営業担当 | | 1625 | 加藤 | 吉見 | x102 | [email protected] | 5 | 1621 | 営業担当 | | 1621 | 西 | 真美 | x101 | [email protected] | 5 | 1056 | 営業担当 | しかし、これは望んでいることではないかもしれません。なぜなら、vps ビューは VP 従業員を公開し、他の従業員は公開しないからです。したがって、ビューの一貫性を確保するために、ユーザーはビューを通じて表示されるデータのみを表示または更新できます。ビューを作成または変更するときは、WITH CHECK OPTION を使用します。 VIEW VPS を作成または置換 選択 従業員番号、 苗字、 ファーストネーム、 役職、 拡大、 メール、 オフィスコード、 報告先 から 従業員 どこ ジョブタイトルは「%VP%」のように チェックオプション付き; CREATE OR REPLACE ステートメントの最後に WITH CHECK OPTION 句を追加することに注意する必要があります。その後、次に示すように、vps ビューを介して再度 employees テーブルに行を挿入します。 INSERT INTO vps(従業員番号、名、姓、役職、内線番号、電子メール、オフィスコード、報告先) VALUES(1704,'John','Minsu','IT スタッフ','x9112','[email protected]',1,1703); この時点で、MySQL は挿入を拒否し、次のエラー メッセージを発行します。
MySQL がこれを許可するかどうかを確認するために、vps ビューを通じて SVP マーケティングの役職を持つ従業員を employees テーブルに挿入できます。 INSERT INTO vps(従業員番号、名、姓、役職、内線番号、電子メール、オフィスコード、報告先) VALUES(1704,'John','Minsu','SVPマーケティング','x9112','[email protected]',1,1076); MySQL は 1 行が影響を受けました (クエリ OK、1 行が影響を受けました)。vps ビューに従ってデータをクエリすることで、挿入操作を再度確認できます。 vps から * を選択します。 上記のクエリが示すように、期待どおりに動作します。 mysql> SELECT * FROM vps; +----------------+----------+-----------+---------------+------------+--------------------------------+-------------+------------+ | 従業員番号 | 姓 | 名 | 役職 | 内線番号 | 電子メール | オフィスコード | 報告先 | +----------------+----------+-----------+---------------+------------+--------------------------------+-------------+------------+ | 1056 | ヒル | メアリー | 営業担当副社長 | x4611 | [email protected] | 1 | 1002 | | 1076 | Firrelli | Jeff | マーケティング担当副社長 | x9273 | [email protected] | 1 | 1002 | | 1704 | Minsu | John | SVP マーケティング | x9112 | [email protected] | 1 | 1076 | +----------------+----------+-----------+---------------+------------+--------------------------------+-------------+------------+ 3行セット さて、この記録についてはこれですべてです。 MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: Nginx を使用してグレースケール リリースを実装する
>>: JavaScript の navigator.userAgent がブラウザ情報を取得するケースの説明
純粋な CSS を使用して波の効果を実現することは、常に非常に困難でした。 波形曲線を実現するにはベ...
Ubuntu16.04 のインストールとアンインストール pip実験環境Ubuntu 16.04; ...
現在の時刻を取得します: current_timestamp を選択します。出力: 2016-06-...
目次1. インターフェース定義2. 属性2.1 オプション属性2.2 読み取り専用プロパティ3. ク...
事故の背景: 数日前、プロジェクトの必要性により、サーバーに python-mysql モジュールを...
データベースが同じデータ バッチを同時に追加、削除、および変更すると、ダーティ書き込み、ダーティ読み...
目次不変の値とは何ですか?不変の値を使用するのはなぜですか? Reactのパフォーマンス最適化は不変...
目次導入始めるReact Nativeゲームエンジンの簡単な紹介React Nativeでスネークゲ...
企業では、データベースの高可用性は常に最優先事項です。多くの中小企業は、MySQL マスター スレー...
いつインストールするかprotoc コマンドを使用しても Protoc が見つからない場合は、インス...
現在、CentOS の最新バージョンは CentOS 8 です。次に、CentOS Linux 8....
目次序文ブラウザJS非同期実行の原理ブラウザのイベントループ実行スタックとタスクキューマクロタスクと...
このセクションでは、テキストの変更の詳細から始めます。これにより、読者はさまざまな HTML フォン...
最近はMySQLのメモをたくさん取っていますが、それは主に会社のOracleが比較的安定していてメン...
.NET の世界に参入したい開発者であれば、何が可能なのかを知る必要があります。 .NET Fram...