{"title":"データベースのマイグレーション・オペレーション","version":"5.0","locale":"ja","docname":"ref/contrib/postgres/operations","url":"/ja/5.0/ref/contrib/postgres/operations/","canonical":"https://djangodocs.dev/ja/5.0/ref/contrib/postgres/operations/","summary":"これらの マイグレーションオペレーション は全て django.contrib.postgres.operations モジュールから利用できます。 マイグレーションを使って拡張機能を作成する Link to this heading #…","html":"<h1>データベースのマイグレーション・オペレーション<a class=\"heading-anchor\" href=\"#database-migration-operations\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>これらの <a class=\"reference internal\" href=\"/ja/5.0/ref/migration-operations/\"><span class=\"doc\">マイグレーションオペレーション</span></a> は全て <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.operations</span></code> モジュールから利用できます。</p>\n<section id=\"creating-extension-using-migrations\">\n<span id=\"create-postgresql-extensions\"></span><h2>マイグレーションを使って拡張機能を作成する<a class=\"heading-anchor\" href=\"#creating-extension-using-migrations\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>マイグレーションファイルを使用して、データベースにPostgreSQL拡張を作成できます。この例ではhstore拡張を作成しますが、他の拡張にも同じ原則が適用されます。</p>\n<p><a class=\"reference internal\" href=\"/ja/5.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.HStoreField\" title=\"django.contrib.postgres.fields.HStoreField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HStoreField</span></code></a> を使用する最初の <code class=\"docutils literal notranslate\"><span class=\"pre\">CreateModel</span></code> または <code class=\"docutils literal notranslate\"><span class=\"pre\">AddField</span></code> オペレーションの前に、PostgreSQL で hstore 拡張機能を設定するために、 <a class=\"reference internal\" href=\"#django.contrib.postgres.operations.HStoreExtension\" title=\"django.contrib.postgres.operations.HStoreExtension\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HStoreExtension</span></code></a> オペレーションを含むマイグレーションを追加してください。たとえば:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.operations</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HStoreExtension</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Migration</span><span class=\"p\">(</span><span class=\"n\">migrations</span><span class=\"o\">.</span><span class=\"n\">Migration</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n\n    <span class=\"n\">operations</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">HStoreExtension</span><span class=\"p\">(),</span> <span class=\"o\">...</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>オペレーションは、拡張機能がすでに存在する場合は追加しないようにスキップします。</p>\n<p>ほとんどの拡張機能には、スーパーユーザー権限を持つデータベースユーザーが必要です。Djangoのデータベースユーザーに適切な権限がない場合は、それらの権限を持つユーザーでDjangoのマイグレーション外で拡張機能を作成する必要があります。その場合、Djangoデータベースに接続してクエリ <code class=\"docutils literal notranslate\"><span class=\"pre\">CREATE</span> <span class=\"pre\">EXTENSION</span> <span class=\"pre\">IF</span> <span class=\"pre\">NOT</span> <span class=\"pre\">EXISTS</span> <span class=\"pre\">hstore;</span></code> を実行してください。</p>\n</section>\n<section id=\"createextension\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">CreateExtension</span></code><a class=\"heading-anchor\" href=\"#createextension\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.CreateExtension\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">CreateExtension</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.CreateExtension\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>PostgreSQL拡張モジュールをインストールする <code class=\"docutils literal notranslate\"><span class=\"pre\">Operation</span></code> サブクラスです。一般的な拡張モジュールについては、以下のサブクラスのいずれかを使用してください。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.CreateExtension.name\">\n<span class=\"sig-name descname\"><span class=\"pre\">name</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.CreateExtension.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>これは必須の引数です。インストールする拡張機能の名前です。</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"bloomextension\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">BloomExtension</span></code><a class=\"heading-anchor\" href=\"#bloomextension\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.BloomExtension\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">BloomExtension</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.BloomExtension\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">bloom</span></code> 拡張機能をインストールします。</p>\n</dd></dl>\n\n</section>\n<section id=\"btreeginextension\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">BtreeGinExtension</span></code><a class=\"heading-anchor\" href=\"#btreeginextension\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.BtreeGinExtension\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">BtreeGinExtension</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.BtreeGinExtension\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">btree_gin</span></code> 拡張機能をインストールします。</p>\n</dd></dl>\n\n</section>\n<section id=\"btreegistextension\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">BtreeGistExtension</span></code><a class=\"heading-anchor\" href=\"#btreegistextension\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.BtreeGistExtension\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">BtreeGistExtension</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.BtreeGistExtension\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">btree_gist</span></code> 拡張機能をインストールします。</p>\n</dd></dl>\n\n</section>\n<section id=\"citextextension\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">CITextExtension</span></code><a class=\"heading-anchor\" href=\"#citextextension\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.CITextExtension\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">CITextExtension</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.CITextExtension\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">citext</span></code> 拡張機能をインストールします。</p>\n</dd></dl>\n\n</section>\n<section id=\"cryptoextension\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">CryptoExtension</span></code><a class=\"heading-anchor\" href=\"#cryptoextension\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.CryptoExtension\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">CryptoExtension</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.CryptoExtension\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">pgcrypto</span></code> 拡張機能をインストールします。</p>\n</dd></dl>\n\n</section>\n<section id=\"hstoreextension\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">HStoreExtension</span></code><a class=\"heading-anchor\" href=\"#hstoreextension\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.HStoreExtension\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HStoreExtension</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.HStoreExtension\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">hstore</span></code> 拡張機能をインストールし、後続のマイグレーションで hstore データを解釈するための接続を設定します。</p>\n</dd></dl>\n\n</section>\n<section id=\"trigramextension\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">TrigramExtension</span></code><a class=\"heading-anchor\" href=\"#trigramextension\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.TrigramExtension\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TrigramExtension</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.TrigramExtension\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">pg_trgm</span></code> 拡張機能をインストールします。</p>\n</dd></dl>\n\n</section>\n<section id=\"unaccentextension\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">UnaccentExtension</span></code><a class=\"heading-anchor\" href=\"#unaccentextension\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.UnaccentExtension\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">UnaccentExtension</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.UnaccentExtension\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">unaccent</span></code> 拡張機能をインストールします。</p>\n</dd></dl>\n\n</section>\n<section id=\"managing-collations-using-migrations\">\n<span id=\"manage-postgresql-collations\"></span><h2>マイグレーションを使って照合順序 (collation) を管理する<a class=\"heading-anchor\" href=\"#managing-collations-using-migrations\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>OSでは提供されているが PostgreSQL では提供されていない特定の照合順序を使用してカラムをフィルタリングしたり並べ替えたりする必要がある場合、マイグレーションファイルを使ってデータベース内の照合順序を管理できます。これらの照合順序は、 <a class=\"reference internal\" href=\"/ja/5.0/ref/models/fields/#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CharField</span></code></a>, <a class=\"reference internal\" href=\"/ja/5.0/ref/models/fields/#django.db.models.TextField\" title=\"django.db.models.TextField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextField</span></code></a> やそのサブクラスの <code class=\"docutils literal notranslate\"><span class=\"pre\">db_collation</span></code> パラメータで使用できます。</p>\n<p>例えば、ドイツ語の電話帳順に並べ替えるための照合順序を作成するには、次のようにします:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.operations</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">CreateCollation</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Migration</span><span class=\"p\">(</span><span class=\"n\">migrations</span><span class=\"o\">.</span><span class=\"n\">Migration</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n\n    <span class=\"n\">operations</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n        <span class=\"n\">CreateCollation</span><span class=\"p\">(</span>\n            <span class=\"s2\">&quot;case_insensitive&quot;</span><span class=\"p\">,</span>\n            <span class=\"n\">provider</span><span class=\"o\">=</span><span class=\"s2\">&quot;icu&quot;</span><span class=\"p\">,</span>\n            <span class=\"n\">locale</span><span class=\"o\">=</span><span class=\"s2\">&quot;und-u-ks-level2&quot;</span><span class=\"p\">,</span>\n            <span class=\"n\">deterministic</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span>\n        <span class=\"p\">),</span>\n        <span class=\"o\">...</span><span class=\"p\">,</span>\n    <span class=\"p\">]</span>\n</code></pre></div>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.CreateCollation\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">CreateCollation</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">locale</span></span></em>, <em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\"><span class=\"pre\">*</span></abbr></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">provider</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'libc'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">deterministic</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.CreateCollation\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>与えられた <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">locale</span></code>、および <code class=\"docutils literal notranslate\"><span class=\"pre\">provider</span></code> で照合順序を作成します。</p>\n<p>大文字小文字を区別しないフィルタリングなど、非決定的な照合順序を作成するには、 <code class=\"docutils literal notranslate\"><span class=\"pre\">deterministic</span></code> パラメータを <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> に設定します。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.RemoveCollation\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">RemoveCollation</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">locale</span></span></em>, <em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\"><span class=\"pre\">*</span></abbr></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">provider</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'libc'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">deterministic</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.RemoveCollation\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> という照合順序を削除します。</p>\n<p>逆順にすると、指定された <code class=\"docutils literal notranslate\"><span class=\"pre\">locale</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">provider</span></code>、そして <code class=\"docutils literal notranslate\"><span class=\"pre\">deterministic</span></code> 引数を使用して照合順序を作成します。したがって、この操作を逆にするには <code class=\"docutils literal notranslate\"><span class=\"pre\">locale</span></code> が必要です。</p>\n</dd></dl>\n\n</section>\n<section id=\"concurrent-index-operations\">\n<h2>インデックスの並列操作<a class=\"heading-anchor\" href=\"#concurrent-index-operations\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>PostgreSQLでは、<code class=\"docutils literal notranslate\"><span class=\"pre\">CREATE</span> <span class=\"pre\">INDEX</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">DROP</span> <span class=\"pre\">INDEX</span></code> 文の <code class=\"docutils literal notranslate\"><span class=\"pre\">CONCURRENTLY</span></code> オプションをサポートしており、書き込みをロックせずにインデックスを追加したり削除したりすることができます。このオプションは、稼働中のデータベースでインデックスを追加したり削除したりする場合に便利です。</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.AddIndexConcurrently\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">AddIndexConcurrently</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model_name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">index</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.AddIndexConcurrently\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"/ja/5.0/ref/migration-operations/#django.db.migrations.operations.AddIndex\" title=\"django.db.migrations.operations.AddIndex\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AddIndex</span></code></a> と似ていますが、<code class=\"docutils literal notranslate\"><span class=\"pre\">CONCURRENTLY</span></code> オプションを使用してインデックスを作成します。このオプションを使用する際に注意すべきいくつかの注意事項があります。このオプションの使用に関する詳細は、PostgreSQL の <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY\">indexes concurrently をビルドするためのドキュメント</a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.RemoveIndexConcurrently\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">RemoveIndexConcurrently</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model_name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.RemoveIndexConcurrently\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"/ja/5.0/ref/migration-operations/#django.db.migrations.operations.RemoveIndex\" title=\"django.db.migrations.operations.RemoveIndex\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RemoveIndex</span></code></a> と似ていますが、<code class=\"docutils literal notranslate\"><span class=\"pre\">CONCURRENTLY</span></code> オプションを使用してインデックスを削除します。このオプションを使用する際に留意すべきいくつかの注意点があります。詳細は、<a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/sql-dropindex.html\">PostgreSQLのドキュメント</a> を参照してください。</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">CONCURRENTLY</span></code> オプションはトランザクション内でサポートされていません (詳細は <a class=\"reference internal\" href=\"/ja/5.0/howto/writing-migrations/#non-atomic-migrations\"><span class=\"std std-ref\">non-atomic migration</span></a> を参照してください)。</p>\n</aside>\n</section>\n<section id=\"adding-constraints-without-enforcing-validation\">\n<h2>検証を強制しない制約を追加する<a class=\"heading-anchor\" href=\"#adding-constraints-without-enforcing-validation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>PostgreSQL は <code class=\"docutils literal notranslate\"><span class=\"pre\">NOT</span> <span class=\"pre\">VALID</span></code> オプションを <code class=\"docutils literal notranslate\"><span class=\"pre\">ADD</span> <span class=\"pre\">CONSTRAINT</span></code> 文でサポートしており、既存の行の検証を行わずに検査制約を追加できます。このオプションは、既存のすべての行が制約を満たすかどうかを確認するためにテーブルをスキャンする手間を省きたい場合に便利です。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">NOT</span> <span class=\"pre\">VALID</span></code> オプションで作成されたチェック制約を後から検証するには、 <a class=\"reference internal\" href=\"#django.contrib.postgres.operations.ValidateConstraint\" title=\"django.contrib.postgres.operations.ValidateConstraint\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ValidateConstraint</span></code></a> 操作を使用してください。</p>\n<p>詳細については、<a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/sql-altertable.html#SQL-ALTERTABLE-NOTES\">PostgreSQL のドキュメント</a> を参照してください。</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.AddConstraintNotValid\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">AddConstraintNotValid</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model_name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">constraint</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.AddConstraintNotValid\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"/ja/5.0/ref/migration-operations/#django.db.migrations.operations.AddConstraint\" title=\"django.db.migrations.operations.AddConstraint\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AddConstraint</span></code></a> に似ていますが、既存の行に対して制約を検証しないものです。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.operations.ValidateConstraint\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ValidateConstraint</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model_name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.operations.ValidateConstraint\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>テーブルをスキャンし、既存の行にある指定のチェック制約を検証します。</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">AddConstraintNotValid</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">ValidateConstraint</span></code> のオペレーションは、2 つの別々のマイグレーションで実行する必要があります。同じアトミック マイグレーション内で両方の操作を実行すると <a class=\"reference internal\" href=\"/ja/5.0/ref/migration-operations/#django.db.migrations.operations.AddConstraint\" title=\"django.db.migrations.operations.AddConstraint\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AddConstraint</span></code></a> クラスと同じ効果があります。一方、非アトミック マイグレーション内で操作を行うと、<code class=\"docutils literal notranslate\"><span class=\"pre\">ValidateConstraint</span></code> 操作が失敗した場合にデータベースが不整合の状態になる可能性があります。</p>\n</aside>\n</section>","rootId":"database-migration-operations","toc":[{"title":"マイグレーションを使って拡張機能を作成する","anchor":"creating-extension-using-migrations","children":[]},{"title":"CreateExtension","anchor":"createextension","children":[]},{"title":"BloomExtension","anchor":"bloomextension","children":[]},{"title":"BtreeGinExtension","anchor":"btreeginextension","children":[]},{"title":"BtreeGistExtension","anchor":"btreegistextension","children":[]},{"title":"CITextExtension","anchor":"citextextension","children":[]},{"title":"CryptoExtension","anchor":"cryptoextension","children":[]},{"title":"HStoreExtension","anchor":"hstoreextension","children":[]},{"title":"TrigramExtension","anchor":"trigramextension","children":[]},{"title":"UnaccentExtension","anchor":"unaccentextension","children":[]},{"title":"マイグレーションを使って照合順序 (collation) を管理する","anchor":"managing-collations-using-migrations","children":[]},{"title":"インデックスの並列操作","anchor":"concurrent-index-operations","children":[]},{"title":"検証を強制しない制約を追加する","anchor":"adding-constraints-without-enforcing-validation","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API リファレンス","url":"/ja/5.0/ref/"},{"docname":"ref/contrib/index","title":"contrib パッケージ","url":"/ja/5.0/ref/contrib/"},{"docname":"ref/contrib/postgres/index","title":"django.contrib.postgres","url":"/ja/5.0/ref/contrib/postgres/"}],"prev":{"docname":"ref/contrib/postgres/lookups","title":"PostgreSQL 固有のルックアップ","url":"/ja/5.0/ref/contrib/postgres/lookups/"},"next":{"docname":"ref/contrib/postgres/search","title":"全文検索","url":"/ja/5.0/ref/contrib/postgres/search/"},"formats":{"html":"/ja/5.0/ref/contrib/postgres/operations/","markdown":"/ja/5.0/ref/contrib/postgres/operations.md","json":"/ja/5.0/ref/contrib/postgres/operations.json"},"source":"https://github.com/django/django/blob/stable/5.0.x/docs/ref/contrib/postgres/operations.txt","official":"https://docs.djangoproject.com/ja/5.0/ref/contrib/postgres/operations/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}