序文MySQL 8.0 では、チェック制約という非常に便利な新機能が導入されました。これにより、不正または不合理なデータ書き込みに対する制御が向上します。詳しく見てみましょう。 チェック制約作成、削除、表示(1)テーブル作成時にチェック制約を作成できます。 mysql> テーブル t1 を作成します -> ( -> チェック (c1 <> c2)、 -> c1 INT チェック (c1 > 10)、 -> c2 INT 制約 c2_positive チェック (c2 > 0)、 -> c3 INT チェック (c3 < 100)、 -> 制約 c1_nonzero チェック (c1 <> 0)、 -> チェック (c1 > c3) -> ); クエリは正常、影響を受けた行は 0 行 (0.03 秒) (2)次の文を使用してチェック制約を追加することもできます。 mysql> ALTER TABLE t1 制約 c3_nonzero CHECK ((c3<>0)) を追加します。 クエリは正常、影響を受けた行は 0 行 (0.16 秒) レコード: 0 重複: 0 警告: 0 (3)次の文を使ってチェック制約を削除することができます。 mysql> ALTER TABLE t1 DROP CONSTRAINT c3_nonzero; クエリは正常、影響を受けた行は 0 行 (0.02 秒) レコード: 0 重複: 0 警告: 0 (4)テーブル構造をクエリすることでチェック制約を表示できます。 mysql> SHOW CREATE TABLE t1_G ************************** 1. 行 **************************** 表: t1 テーブルの作成: CREATE TABLE `t1` ( `c1` int デフォルト NULL, `c2` int デフォルト NULL, `c3` int デフォルト NULL, 制約 `c1_nonzero` チェック ((`c1` <> 0))、 制約 `c2_positive` チェック ((`c2` > 0))、 制約 `t1_chk_1` チェック ((`c1` <> `c2`)), 制約 `t1_chk_2` チェック ((`c1` > 10))、 制約 `t1_chk_3` チェック ((`c3` < 100))、 制約 `t1_chk_4` チェック ((`c1` > `c3`)) ) エンジン=InnoDB デフォルト文字セット=utf8mb4 照合=utf8mb4_0900_ai_ci セット内の 1 行 (0.00 秒) (5) 次の 2 つのビューを通じて表示することもできます。table_constraints はテーブルに存在する制約を照会し、check_constraints はチェック制約の特定の定義を照会します。 mysql> SELECT * FROM information_schema.table_constraints WHERE table_name='t1'; +--------------------+-------------------+-----------------+--------------+------------+-----------------+----------+ | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE | ENFORCED | +--------------------+-------------------+-----------------+--------------+------------+-----------------+----------+ | def | テスト | c1_nonzero | テスト | t1 | チェック | はい | | def | テスト | c2_positive | テスト | t1 | チェック | はい | | def | テスト | t1_chk_1 | テスト | t1 | チェック | はい | | def | テスト | t1_chk_2 | テスト | t1 | チェック | はい | | def | テスト | t1_chk_3 | テスト | t1 | チェック | はい | | def | テスト | t1_chk_4 | テスト | t1 | チェック | はい | +--------------------+-------------------+-----------------+--------------+------------+-----------------+----------+ セット内の 6 行 (0.00 秒) mysql> SELECT * FROM information_schema.check_constraints WHERE constraint_name='c1_nonzero'; +--------------------+-------------------+-----------------+--------------+ | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | CHECK_CLAUSE | +--------------------+-------------------+-----------------+--------------+ | 定義 | テスト | c1_nonzero | (`c1` <> 0) | +--------------------+-------------------+-----------------+--------------+ セット内の 1 行 (0.00 秒) (6)チェック制約を満たさないデータを挿入すると、エラーが直接報告されます。 mysql> t1 に値 (0,0,0) を挿入します。 エラー 3819 (HY000): チェック制約 'c1_nonzero' に違反しています。 制限(1)自動増分列と他のテーブルの列はチェック制約をサポートしていない (2)CONNECTION_ID()、CURRENT_USER()、NOW()などの不確実な関数はチェック制約をサポートしていません。 (3)ユーザー定義関数はチェック制約をサポートしていない (4)ストアドプロシージャはチェック制約をサポートしていない (5)変数はチェック制約をサポートしていない (6)サブクエリはチェック制約をサポートしていない 要約するチェック制約は、さまざまなデータ検証シナリオを実現できる非常に優れた機能です。ぜひお試しください。 以上がMySQL 8.0の新機能であるチェック制約の簡単な紹介です。MySQL 8.0の新機能であるチェック制約の詳細については、123WORDPRESS.COMの他の関連記事にご注目ください。 以下もご興味があるかもしれません:
|
<<: docker run -v はデータボリュームを異常にマウントし、コンテナのステータスは常に再起動になります。
環境: init_worker_by_lua、set_by_lua、rewrite_by_lua、a...
フロントエンドプロジェクトのパッケージ化.env.productionを見つけて、自分のIPまたはド...
開発中に、非常に単純なテキストバブル効果に遭遇しました。これは、おおよそ次のようになります。 うーん...
この記事では、効率を向上させ、時間を節約することを願って、最も効果的な 6 つの方法を紹介します。 ...
Docker コンテナ内のプログラムは、ホスト ディレクトリ内のデータにアクセスして呼び出す必要があ...
今日は nginx サーバーを使用するのですが、vue プロジェクトをサーバーにデプロイする必要もあ...
Tomcat は内部的に複数の ClassLoader を定義し、アプリケーションとコンテナーが異な...
最近、ネイティブ JS を使用して、さらにいくつかの小さな機能を実装したいと思っています。現在、ブロ...
今夜の夕食後にノートパソコンの電源を入れたところ、問題が発生しました。通常、コンピューターがスリープ...
目次確認する:例の検証と組み合わせるselect クエリ ステートメントはロックされませんが、sel...
1. ワニスの紹介Varnish は、高性能なオープンソースのリバースプロキシサーバーおよび HTT...
この記事では、ドロップダウンテーブルの複数選択と検索を実現するためのvue+elementuiの具体...
この記事は、4G メモリ システム用の MySQL 構成ファイル ソリューションです (主に Inn...
目次1. 概要2. Nginxインストールパッケージをダウンロードする3. 依存パッケージをインスト...
1.MySQLの複数インスタンスMySQL マルチインスタンスとは、1 台以上のマシン上で複数の M...