An identity column is a special column that is generated automatically from an implicit sequence. It can be used to generate key values. 《機械翻訳》アイデンティティ列は、暗黙的な列から自動的に生成される特殊なシーケンスです。 これを使用してキー値を生成できます。
To create an identity column, use the <literal>GENERATED ...
AS IDENTITY</literal> clause in <command>CREATE TABLE</command>, for example:
《機械翻訳》アイデンティティ列を作成するには、CREATE TABLE
句のGENERATED.AS IDENTITY
を使用します。
例の場合:
CREATE TABLE people (
id bigint GENERATED ALWAYS AS IDENTITY,
...,
);
or alternatively 《機械翻訳》または
CREATE TABLE people (
id bigint GENERATED BY DEFAULT AS IDENTITY,
...,
);
See <xref linkend="sql-createtable"/> for more details. 《機械翻訳》詳細はCREATE TABLEを参照してください。
If an <command>INSERT</command> command is executed on the table with the
identity column and no value is explicitly specified for the identity
column, then a value generated by the implicit sequence is inserted. For
example, with the above definitions and assuming additional appropriate
columns, writing
《機械翻訳》INSERT
コマンドが列というアイデンティティを持つテーブルで実行され、列というアイデンティティに値が明示的に指定されていない場合、暗黙的なシーケンスによって生成された値が挿入されます。
例では、上記の定義を使用し、追加の適切な列を想定して、次のように記述します。
INSERT INTO people (name, address) VALUE ('A', 'foo'); INSERT INTO people (name, address) VALUE ('B', 'bar');
would generate values for the <literal>id</literal> column starting at 1
and result in the following table data:
《機械翻訳》は、1から始まるid
列の値を生成し、結果は次のテーブルデータになります。
id | name | address ----+------+--------- 1 | A | foo 2 | B | bar
Alternatively, the keyword <literal>DEFAULT</literal> can be specified in
place of a value to explicitly request the sequence-generated value, like
《機械翻訳》または、値の代わりにキーワードデフォルト
を指定して、のようにシーケンスによって生成された値を明示的にリクエストすることもできます。
INSERT INTO people (id, name, address) VALUE (DEFAULT, 'C', 'baz');
Similarly, the keyword <literal>DEFAULT</literal> can be used in
<command>UPDATE</command> commands.
《機械翻訳》同様に、キーワードDEFAULT
はUPDATE
コマンドで使用できます。
Thus, in many ways, an identity column behaves like a column with a default value. 《機械翻訳》したがって、多くの点で、アイデンティティ列はデフォルト値のある列のように動作します。
The clauses <literal>ALWAYS</literal> and <literal>BY DEFAULT</literal> in
the column definition determine how explicitly user-specified values are
handled in <command>INSERT</command> and <command>UPDATE</command>
commands. In an <command>INSERT</command> command, if
<literal>ALWAYS</literal> is selected, a user-specified value is only
accepted if the <command>INSERT</command> statement specifies
<literal>OVERRIDING SYSTEM VALUE</literal>. If <literal>BY
DEFAULT</literal> is selected, then the user-specified value takes
precedence. Thus, using <literal>BY DEFAULT</literal> results in a
behavior more similar to default values, where the default value can be
overridden by an explicit value, whereas <literal>ALWAYS</literal> provides
some more protection against accidentally inserting an explicit value.
《機械翻訳》デフォルト定義のALWAYS
およびBY DEFAULT
句は、INSERT
およびUPDATE
コマンドで明示的にユーザを指定した値を処理する方法を決定します。
INSERT
コマンドでは、ALWAYS
が選択されている場合、INSERT
ユーザがOVERRIDING SYSTEM VALUE
を指定している場合にのみ、システム指定の値が受け入れられます。
BY DEFAULT
を選択すると、ユーザで指定した値が優先されます。
したがって、BY DEFAULT
を使用すると、明示的な値によってデフォルトを上書きできるデフォルト値値に似た動作になります。
一方、ALWAYS
を使用すると、誤って明示的な値を挿入することに対する保護が強化されます。
The data type of an identity column must be one of the data types supported by sequences. (See <xref linkend="sql-createsequence"/>.) The properties of the associated sequence may be specified when creating an identity column (see <xref linkend="sql-createtable"/>) or changed afterwards (see <xref linkend="sql-altertable"/>). 《機械翻訳》識別データタイプの列は、順序でサポートされているデータタイプの1つである必要があります(CREATE SEQUENCEを参照)。 関連付けられたシーケンスのプロパティは、識別列の作成時に指定するか(CREATE TABLEを参照)、後で変更できます(ALTER TABLEを参照)。
An identity column is automatically marked as <literal>NOT NULL</literal>.
An identity column, however, does not guarantee uniqueness. (A sequence
normally returns unique values, but a sequence could be reset, or values
could be inserted manually into the identity column, as discussed above.)
Uniqueness would need to be enforced using a <literal>PRIMARY KEY</literal>
or <literal>UNIQUE</literal> constraint.
《機械翻訳》アイデンティティ列は、自動的にNOT NULL
とマークされます。
ただし、アイデンティティ列は一意性を保証しません。
(通常、シーケンスはユニーク値を戻しますが、シーケンスはリセットにするか、前述のようにアイデンティティ列に値を手動で挿入できます。)
一意性は、PRIMARY KEY
またはUNIQUE
制約を使用して適用する必要があります。
In table inheritance hierarchies, identity columns and their properties in
a child table are independent of those in its parent tables. A child table
does not inherit identity columns or their properties automatically from
the parent. During <command>INSERT</command> or <command>UPDATE</command>,
a column is treated as an identity column if that column is an identity
column in the table named in the statement, and the corresponding identity
properties are applied.
《機械翻訳》テーブル継承階層では、子テーブルのID列およびそのプロパティは、親表のID列およびそのプロパティから独立しています。
子テーブルは、親から自動的にID列またはそのプロパティを継承しません。
INSERT
またはUPDATE
時に、列がステートメントのテーブル記名的のID列であり、対応するIDプロパティが適用されている場合、その列はID列として扱われます。
Partitions inherit identity columns from the partitioned table. They cannot have their own identity columns. The properties of a given identity column are consistent across all the partitions in the partition hierarchy. 《機械翻訳》パーティションは、パーティション化されたテーブルからアイデンティティ列を継承します。 独自のアイデンティティ列を持つことはできません。 特定のアイデンティティ列のプロパティは、パーティション階層内のすべてのパーティションで一貫しています。