{"title":"Tindakan perpindahan basisdata","version":"4.2","locale":"id","docname":"ref/contrib/postgres/operations","url":"/id/4.2/ref/contrib/postgres/operations/","canonical":"https://djangodocs.dev/id/4.2/ref/contrib/postgres/operations/","summary":"Semua operations ini tersedia dari modul django.contrib.postgres.operations . Membuat tambahan menggunakan perpindahan Link to this heading # Anda dapat membuat…","html":"<h1>Tindakan perpindahan basisdata<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>Semua <a class=\"reference internal\" href=\"/id/4.2/ref/migration-operations/\"><span class=\"doc\">operations</span></a> ini tersedia dari modul <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>Membuat tambahan menggunakan perpindahan<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>Anda dapat membuat tambahan PostgreSQL dalam basisdata anda menggunakan berkas pemindahan. Contoh ini membuat sebuah tambahan hstore, tetapi prinsip-prinsip sama berlaku untuk tambahan-tambahan lain.</p>\n<p>Setel tambahan hstore dalam PostgreSQL sebelum tindakan pertama <code class=\"docutils literal notranslate\"><span class=\"pre\">CreateModel</span></code> atau <code class=\"docutils literal notranslate\"><span class=\"pre\">AddField</span></code> yang melibatkan <a class=\"reference internal\" href=\"/id/4.2/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> dengan menambahkan perpindahan dengan tindakan <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>. Sebagai contoh:</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>The operation skips adding the extension if it already exists.</p>\n<p>For most extensions, this requires a database user with superuser privileges.\nIf the Django database user doesn't have the appropriate privileges, you'll\nhave to create the extension outside of Django migrations with a user that has\nthem. In that case, connect to your Django database and run the query\n<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>An <code class=\"docutils literal notranslate\"><span class=\"pre\">Operation</span></code> subclass which installs a PostgreSQL extension. For common\nextensions, use one of the more specific subclasses below.</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>Ini adalah argumen wajib. Nama dari tambahan untuk dipasang.</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>Installs the <code class=\"docutils literal notranslate\"><span class=\"pre\">bloom</span></code> extension.</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>Installs the <code class=\"docutils literal notranslate\"><span class=\"pre\">btree_gin</span></code> extension.</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>Installs the <code class=\"docutils literal notranslate\"><span class=\"pre\">btree_gist</span></code> extension.</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>Pasang tambahan <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>Pasang tambahan <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>Pasang tambahan <code class=\"docutils literal notranslate\"><span class=\"pre\">hstore</span></code> dan juga setel hubungan pada penterjemah data hstore untuk kemungkinan penggunaan dalam perpindahaan selanjutnya.</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>Pasang tambahan <code class=\"docutils literal notranslate\"><span class=\"pre\">pg_trm</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>Pasang tambahan <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>Managing collations using migrations<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>If you need to filter or order a column using a particular collation that your\noperating system provides but PostgreSQL does not, you can manage collations in\nyour database using a migration file. These collations can then be used with\nthe <code class=\"docutils literal notranslate\"><span class=\"pre\">db_collation</span></code> parameter on <a class=\"reference internal\" href=\"/id/4.2/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>,\n<a class=\"reference internal\" href=\"/id/4.2/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>, and their subclasses.</p>\n<p>For example, to create a collation for German phone book ordering:</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>Creates a collation with the given <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">locale</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">provider</span></code>.</p>\n<p>Set the <code class=\"docutils literal notranslate\"><span class=\"pre\">deterministic</span></code> parameter to <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> to create a\nnon-deterministic collation, such as for case-insensitive filtering.</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>Removes the collations named <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>.</p>\n<p>When reversed this is creating a collation with the provided <code class=\"docutils literal notranslate\"><span class=\"pre\">locale</span></code>,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">provider</span></code>, and <code class=\"docutils literal notranslate\"><span class=\"pre\">deterministic</span></code> arguments. Therefore, <code class=\"docutils literal notranslate\"><span class=\"pre\">locale</span></code> is\nrequired to make this operation reversible.</p>\n</dd></dl>\n\n</section>\n<section id=\"concurrent-index-operations\">\n<h2>Concurrent index operations<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 supports the <code class=\"docutils literal notranslate\"><span class=\"pre\">CONCURRENTLY</span></code> option to <code class=\"docutils literal notranslate\"><span class=\"pre\">CREATE</span> <span class=\"pre\">INDEX</span></code> and\n<code class=\"docutils literal notranslate\"><span class=\"pre\">DROP</span> <span class=\"pre\">INDEX</span></code> statements to add and remove indexes without locking out writes.\nThis option is useful for adding or removing an index in a live production\ndatabase.</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>Like <a class=\"reference internal\" href=\"/id/4.2/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>, but creates an\nindex with the <code class=\"docutils literal notranslate\"><span class=\"pre\">CONCURRENTLY</span></code> option. This has a few caveats to be aware\nof when using this option, see <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY\">the PostgreSQL documentation of building\nindexes 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>Like <a class=\"reference internal\" href=\"/id/4.2/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>, but removes the\nindex with the <code class=\"docutils literal notranslate\"><span class=\"pre\">CONCURRENTLY</span></code> option. This has a few caveats to be aware\nof when using this option, see <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/sql-dropindex.html\">the PostgreSQL documentation</a>.</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Catatan</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">CONCURRENTLY</span></code> option is not supported inside a transaction (see\n<a class=\"reference internal\" href=\"/id/4.2/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>Adding constraints without enforcing validation<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 supports the <code class=\"docutils literal notranslate\"><span class=\"pre\">NOT</span> <span class=\"pre\">VALID</span></code> option with the <code class=\"docutils literal notranslate\"><span class=\"pre\">ADD</span> <span class=\"pre\">CONSTRAINT</span></code>\nstatement to add check constraints without enforcing validation on existing\nrows. This option is useful if you want to skip the potentially lengthy scan of\nthe table to verify that all existing rows satisfy the constraint.</p>\n<p>To validate check constraints created with the <code class=\"docutils literal notranslate\"><span class=\"pre\">NOT</span> <span class=\"pre\">VALID</span></code> option at a later\npoint of time, use the\n<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> operation.</p>\n<p>See <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/sql-altertable.html#SQL-ALTERTABLE-NOTES\">the PostgreSQL documentation</a> for more details.</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>Like <a class=\"reference internal\" href=\"/id/4.2/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>, but avoids\nvalidating the constraint on existing rows.</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>Scans through the table and validates the given check constraint on\nexisting rows.</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Catatan</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">AddConstraintNotValid</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">ValidateConstraint</span></code> operations should be\nperformed in two separate migrations. Performing both operations in the\nsame atomic migration has the same effect as\n<a class=\"reference internal\" href=\"/id/4.2/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>, whereas performing\nthem in a single non-atomic migration, may leave your database in an\ninconsistent state if the <code class=\"docutils literal notranslate\"><span class=\"pre\">ValidateConstraint</span></code> operation fails.</p>\n</aside>\n</section>","rootId":"database-migration-operations","toc":[{"title":"Membuat tambahan menggunakan perpindahan","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":"Managing collations using migrations","anchor":"managing-collations-using-migrations","children":[]},{"title":"Concurrent index operations","anchor":"concurrent-index-operations","children":[]},{"title":"Adding constraints without enforcing validation","anchor":"adding-constraints-without-enforcing-validation","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Acuan API","url":"/id/4.2/ref/"},{"docname":"ref/contrib/index","title":"Paket contrib","url":"/id/4.2/ref/contrib/"},{"docname":"ref/contrib/postgres/index","title":"django.contrib.postgres","url":"/id/4.2/ref/contrib/postgres/"}],"prev":{"docname":"ref/contrib/postgres/lookups","title":"Pencarian khusus PostgreSQL","url":"/id/4.2/ref/contrib/postgres/lookups/"},"next":{"docname":"ref/contrib/postgres/search","title":"Pencarian teks penuh","url":"/id/4.2/ref/contrib/postgres/search/"},"formats":{"html":"/id/4.2/ref/contrib/postgres/operations/","markdown":"/id/4.2/ref/contrib/postgres/operations.md","json":"/id/4.2/ref/contrib/postgres/operations.json"},"source":"https://github.com/django/django/blob/stable/4.2.x/docs/ref/contrib/postgres/operations.txt","official":"https://docs.djangoproject.com/id/4.2/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"]}