DB2 12 - Rules for inserting data into an identity column


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES, Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

DB2 12 - Regras para inserir dados em uma coluna de identidade - Rules for inserting data into an identity column

Uma coluna de identidade contém um valor numérico exclusivo para cada linha da tabela.
Se você pode inserir dados em uma coluna de identidade e como esses dados são inseridos depende de como a coluna é definida.
An identity column contains a unique numeric value for each row in the table.
Whether you can insert data into an identity column and how that data gets inserted depends on how the column is defined.

Uma coluna de identidade é uma coluna numérica, definida em uma instrução CREATE TABLE ou ALTER TABLE, que possui valores crescentes ou decrescentes.
Para que uma coluna de identidade seja o mais útil possível, seus valores também devem ser exclusivos.
A coluna possui um tipo de dados SMALLINT, INTEGER ou DECIMAL (p, 0) e é definida com a cláusula AS IDENTITY.
A cláusula AS IDENTITY especifica que a coluna é uma coluna de identidade.
Para obter informações sobre como usar colunas de identidade para identificar linhas de maneira exclusiva, consulte Identity columns

An identity column is a numeric column, defined in a CREATE TABLE or ALTER TABLE statement, that has ascending or descending values.
For an identity column to be as useful as possible, its values should also be unique.
The column has a SMALLINT, INTEGER, or DECIMAL(p,0) data type and is defined with the AS IDENTITY clause.
The AS IDENTITY clause specifies that the column is an identity column.
For information about using identity columns to uniquely identify rows, see Identity columns

Antes de inserir dados em uma coluna de identidade, você deve saber como a coluna é definida.
As colunas de identidade são definidas com a cláusula GENERATED ALWAYS ou GENERATED BY DEFAULT.
GENERATED ALWAYS significa que o Db2 gera um valor para a coluna e você não pode inserir dados nessa coluna.
Se a coluna for definida como GENERATED BY DEFAULT, você pode inserir um valor e Db2 fornecerá um valor padrão se você não fornecer um.

Before you insert data into an identity column, you must know how the column is defined.
Identity columns are defined with the GENERATED ALWAYS or GENERATED BY DEFAULT clause.
GENERATED ALWAYS means that Db2 generates a value for the column, and you cannot insert data into that column.
If the column is defined as GENERATED BY DEFAULT, you can insert a value, and Db2 provides a default value if you do not supply one.

Exemplo: - Example:

Suponha que as tabelas T1 e T2 tenham duas colunas: uma coluna de caracteres e uma coluna de inteiros que é definida como uma coluna de identidade.
Para que a instrução a seguir seja executada com êxito, IDENTCOL2 deve ser definido como GENERATED BY DEFAULT.
Suppose that tables T1 and T2 have two columns: a character column and an integer column that is defined as an identity column.
For the following statement to run successfully, IDENTCOL2 must be defined as GENERATED BY DEFAULT.

INSERT INTO T2 (CHARCOL2,IDENTCOL2)
  SELECT * FROM T1;

Se IDENTCOL2 for definido como GERADO SEMPRE, você não poderá inserir os dados da coluna de identidade de T1 em T2, mas poderá inserir os dados da coluna de caracteres.
Para inserir apenas os dados de caracteres, use um dos seguintes métodos:
If IDENTCOL2 is defined as GENERATED ALWAYS, you cannot insert the identity column data from T1 into T2, but you can insert the character column data.
To insert only the character data, use one of the following methods:

  • Especifique apenas a coluna de caracteres em sua instrução INSERT, como na seguinte instrução:
    Specify only the character column in your INSERT statement, as in the following statement:
    INSERT INTO T2 (CHARCOL2)
      SELECT CHARCOL1 FROM T1;
  • Especifique a cláusula OVERRIDING USER VALUE em sua instrução INSERT para dizer ao Db2 para ignorar quaisquer valores que você fornecer para colunas geradas pelo sistema, como na seguinte instrução:
    Specify the OVERRIDING USER VALUE clause in your INSERT statement to tell Db2 to ignore any values that you supply for system-generated columns, as in the following statement:
    INSERT INTO T2 (CHARCOL2,IDENTCOL2) OVERRIDING USER VALUE
      SELECT * FROM T1;

Parent topic: Inserting rows by using the INSERT statement


© Copyright IBM Corp.