|
274 | 274 | <span class="original"> |
275 | 275 | An explicit constraint name can also be specified, for example: |
276 | 276 | </span> |
277 | | -《機械翻訳》制約:については、明示的な名前例を指定することもできます。 |
| 277 | +以下の例のように、明示的な制約名を指定することもできます。 |
278 | 278 | </p><pre class="programlisting"> |
279 | 279 | CREATE TABLE products ( |
280 | 280 | product_no integer NOT NULL, |
|
287 | 287 | A not-null constraint is usually written as a column constraint. The |
288 | 288 | syntax for writing it as a table constraint is |
289 | 289 | </span> |
290 | | -《機械翻訳》NULL以外の制約は、通常、カラム制約と書かれます。 |
291 | | -テーブル構文と書くための制約です。 |
| 290 | +非NULL制約は通常、列制約として記述されます。 |
| 291 | +テーブル制約として記述するための構文は以下のとおりです。 |
292 | 292 | </p><pre class="programlisting"> |
293 | 293 | CREATE TABLE products ( |
294 | 294 | product_no integer, |
|
302 | 302 | But this syntax is not standard and mainly intended for use by |
303 | 303 | <application>pg_dump</application>. |
304 | 304 | </span> |
305 | | -《機械翻訳》しかし、この構文は標準ではなく、主に<span class="application">pg_dump</span>. |
| 305 | +しかし、この構文は標準ではなく、主に<span class="application">pg_dump</span>での使用を目的としています。 |
306 | 306 | </p><p> |
307 | 307 | <span class="original"> |
308 | 308 | A not-null constraint is functionally equivalent to creating a check |
|
311 | 311 | <productname>PostgreSQL</productname> creating an explicit |
312 | 312 | not-null constraint is more efficient. |
313 | 313 | </span> |
314 | | -《機械翻訳》非NULL制約は、検査制約を作成することと機能的に同等です<code class="literal">CHECK (<em class="replaceable"><code>column_name</code></em> IS NOT NULL)</code>しかし、<span class="productname">PostgreSQL</span>明示的な非NULL制約を作成する方が効率的です。 |
| 314 | +非NULL制約は、チェック制約<code class="literal">CHECK (<em class="replaceable"><code>column_name</code></em> IS NOT NULL)</code>を作成することと機能的には同じですが、<span class="productname">PostgreSQL</span>では明示的な非NULL制約を作成する方がより効率的です。 |
315 | 315 | </p><p> |
316 | 316 | <span class="original"> |
317 | 317 | Of course, a column can have more than one constraint. Just write |
|
336 | 336 | <span class="original"> |
337 | 337 | However, a column can have at most one explicit not-null constraint. |
338 | 338 | </span> |
339 | | -《機械翻訳》ただし、カラムには明示的な非NULL制約を1つだけ含めることができます。 |
| 339 | +ただし、1つの列に設定できる明示的な非NULL制約は1つだけです。 |
340 | 340 | </p><p> |
341 | 341 | <span class="original"> |
342 | 342 | The <literal>NOT NULL</literal> constraint has an inverse: the |
|
555 | 555 | not enforced by <productname>PostgreSQL</productname>, but it is |
556 | 556 | usually best to follow it. |
557 | 557 | </span> |
558 | | -《マッチ度[83.703704]》1つのテーブルは最大1つの主キーを持つことができます。 |
559 | | -(一意性制約および非NULL制約に個数の制限はありません。 |
560 | | -機能的にはほとんど同じものですが、主キーとして識別される制約は1つのみです。) |
| 558 | +1つのテーブルは最大1つの主キーを持つことができます。 |
| 559 | +(一意性制約はいくつでも存在する可能性があり、それらを非NULL制約と組み合わせても機能的にはほとんど同じですが、主キーとして識別できるのは1つだけです。) |
561 | 560 | リレーショナルデータベース理論では、全てのテーブルに主キーが1つ必要とされています。 |
562 | 561 | この規則は<span class="productname">PostgreSQL</span>では強制されませんが、たいていの場合はこれに従うことが推奨されます。 |
563 | | -《機械翻訳》テーブルは最大1つの主キーを持つことができます(任意の数の一意性制約を非NULL制約と組み合わせることができ、機能的にはほとんど同じものですが、主キーとして識別できるのは1つだけです)。 |
564 | | -リレーショナルデータベース理論では、すべてのテーブルが主キーを持つ必要があると規定されています。 |
565 | | -このルールは<span class="productname">PostgreSQL</span>によって強制されるものではありませんが、通常はベストがそれに従います。 |
566 | 562 | </p><p> |
567 | 563 | <span class="original"> |
568 | 564 | Primary keys are useful both for |
|
804 | 800 | the referenced table or by deleting the now-dangling rows from the |
805 | 801 | referencing table. |
806 | 802 | </span> |
807 | | -《機械翻訳》デフォルト<code class="literal">ON DELETE</code>アクションは<code class="literal">ON DELETE NO ACTION</code>;指定する必要はありません。 |
808 | | -これは、被参照テーブルの削除の続行が許可されることを意味します。 |
809 | | -ただし、外国-キー制約は満たされる必要があるため、このオペレーションは通常エラーになります。 |
810 | | -ただし、外国-キー制約のチェックは、トランザクションの後の方への遅延にすることもできます(この章には記載されていません)。 |
811 | | -そのケースでは、<code class="literal">NO ACTION</code>設定によって、他のコマンドがシチュエーションを<span class="quote">「<span class="quote">修正</span>」</span>できるようになります前制約がチェックされます。 |
812 | | -例に対しては、挿入によって他の適切な行を被参照テーブルに入れるか、参照テーブルから現在ぶら下がっている行を削除することによってチェックされます。 |
| 803 | +デフォルトの<code class="literal">ON DELETE</code>アクションは<code class="literal">ON DELETE NO ACTION</code>であり、これを指定する必要はありません。 |
| 804 | +これは、被参照テーブルで削除を実行できることを意味します。 |
| 805 | +しかし、外部キー制約は依然として満たす必要があるため、この操作は通常エラーとなります。 |
| 806 | +ただし、外部キー制約の確認は、トランザクションの後半に延期することもできます(この章では説明しません)。 |
| 807 | +その場合、<code class="literal">NO ACTION</code>設定を使用することで、制約が確認される前に他のコマンドでその状況を<span class="quote">「<span class="quote">修正</span>」</span>することができます。 |
| 808 | +たとえば、被参照テーブルに別の適切な行を挿入したり、参照テーブルで現在浮いている行を削除したりするなどです。 |
813 | 809 | </p><p> |
814 | 810 | <span class="original"> |
815 | 811 | <literal>RESTRICT</literal> is a stricter setting than <literal>NO |
816 | 812 | ACTION</literal>. It prevents deletion of a referenced row. |
817 | 813 | <literal>RESTRICT</literal> does not allow the check to be deferred until |
818 | 814 | later in the transaction. |
819 | 815 | </span> |
820 | | -《機械翻訳》<code class="literal">RESTRICT</code>は<code class="literal">NO ACTION</code>よりも厳密な設定です。 |
821 | | -これにより、被参照行の削除が防止されます。 |
822 | | -<code class="literal">RESTRICT</code>は、トランザクションの後半までチェックが遅延になることを許可しません。 |
| 816 | +<code class="literal">RESTRICT</code>は<code class="literal">NO ACTION</code>よりも厳しい設定です。 |
| 817 | +これは、被参照行が削除されることを防ぎます。 |
| 818 | +<code class="literal">RESTRICT</code>では、トランザクションの後半まで確認を延期することはできません。 |
823 | 819 | </p><p> |
824 | 820 | <span class="original"> |
825 | 821 | <literal>CASCADE</literal> specifies that when a referenced row is deleted, |
826 | 822 | row(s) referencing it should be automatically deleted as well. |
827 | 823 | </span> |
828 | | -《機械翻訳》<code class="literal">CASCADE</code>は、被参照行が削除された場合、行参照も自動的に削除されるように指定します。 |
| 824 | +<code class="literal">CASCADE</code>は、被参照行が削除されるときに、それを参照している行も自動的に削除するように指定します。 |
829 | 825 | </p><p> |
830 | 826 | <span class="original"> |
831 | 827 | There are two other options: |
|
838 | 834 | but the default value would not satisfy the foreign key constraint, the |
839 | 835 | operation will fail. |
840 | 836 | </span> |
841 | | -《機械翻訳》他に次の2つのオプションがあります:<code class="literal">SET NULL</code>および<code class="literal">SET DEFAULT</code>。 |
842 | | -これらは、参照カラムが削除されたときに、参照行のデフォルト行をそれぞれNULLまたはその被参照値に設定します。 |
843 | | -ノートは、これらが制約を遵守することを免除するものではないことを示します。 |
844 | | -例については、アクションで<code class="literal">SET DEFAULT</code>が指定されているが、デフォルト値が外部キー制約を満たさない場合、オペレーションは失敗します。 |
| 837 | +2つの他のオプションがあります。 |
| 838 | +<code class="literal">SET NULL</code>と<code class="literal">SET DEFAULT</code>です。 |
| 839 | +これらにより、被参照行が削除されるとき、参照行の参照列がそれぞれNULLまたはデフォルト値に設定されます。 |
| 840 | +ただし、これらはいかなる制約にも従うことを許すものではないことに注意してください。 |
| 841 | +たとえば、アクションで<code class="literal">SET DEFAULT</code>が指定されているが、デフォルト値が外部キー制約を満たさない場合、操作は失敗します。 |
845 | 842 | </p><p> |
846 | 843 | <span class="original"> |
847 | 844 | The appropriate choice of <literal>ON DELETE</literal> action depends on |
|
925 | 922 | string with a different case variant, if a character string type with a |
926 | 923 | case-insensitive collation is used). |
927 | 924 | </span> |
928 | | -《機械翻訳》<code class="literal">ON DELETE</code>と同様に、<code class="literal">ON UPDATE</code>もあります。 |
929 | | -これは、被参照カラムが変更(更新)された場合に呼び出されます。 |
930 | | -可能なアクションは同じですが、<code class="literal">SET NULL</code>および<code class="literal">SET DEFAULT</code>にはカラムリストを指定できません。 |
931 | | -このケースでは、<code class="literal">CASCADE</code>は、被参照カラムの更新された値を参照行にコピーする必要があることを意味します。 |
932 | | -<code class="literal">ON UPDATE NO ACTION</code>(デフォルト)と<code class="literal">ON UPDATE RESTRICT</code>の間にも顕著な差があります。 |
933 | | -前者は更新の処理を可能にし、外国キー制約は更新後の状態に対してチェックされます。 |
934 | | -後者は、更新後の状態が制約を満たしていても更新が実行されないようにします。 |
935 | | -これにより、更新a被参照行は別個の値になりますが、等しいものとして比較されます(例の場合は、ケースバリアントが異なる文字の並びで、を区別しない文字の並びが使用されている場合)。 |
936 | | -ケース照合順序タイプ |
| 925 | +<code class="literal">ON DELETE</code>と同様に、被参照列が変更(更新)されるときに呼び出される<code class="literal">ON UPDATE</code>もあります。 |
| 926 | +<code class="literal">SET NULL</code>と<code class="literal">SET DEFAULT</code>に対して列リストを指定できない点を除いて、実行できるアクションは同じです。 |
| 927 | +この場合、<code class="literal">CASCADE</code>は、被参照列の更新された値を参照行にコピーする必要があることを意味します。 |
| 928 | +また、<code class="literal">ON UPDATE NO ACTION</code>(デフォルトです)と<code class="literal">ON UPDATE RESTRICT</code>には大きな違いがあります。 |
| 929 | +前者では更新を続行でき、外部キー制約は更新後の状態に対して確認されます。 |
| 930 | +後者は、更新後の状態が制約を満たしている場合でも、更新が実行されないようにします。 |
| 931 | +これにより、被参照行が、異なってはいるものの比較結果が等しい値 (たとえば、大文字小文字を区別しない照合順序で文字列型が使用されている場合における、大文字と小文字が異なる文字列)に更新されることを防ぎます。 |
937 | 932 | </p><p> |
938 | 933 | <span class="original"> |
939 | 934 | Normally, a referencing row need not satisfy the foreign key constraint |
|
0 commit comments