Identity column is a way to generate system generated unique identifier for a table in Teradata.
➠ Characteristics for Identity Columns
SELECT StartValue,
MinValue,
MaxValue,
Increment,
Cyc,
AvailValue,
CAST(dbase.databasename AS VARCHAR(35)) databasename,
CAST(dbc.tvm.tvmname AS VARCHAR(35)) tablename
FROM dbc.idcol
INNER JOIN dbc.tvm
ON (dbc.idcol.databaseid = dbc.tvm.databaseid
AND dbc.idcol.tableid = dbc.tvm.tvmid)
INNER JOIN dbc.dbase ON tvm.DatabaseId = dbase.DatabaseId
WHERE dbc.tvm.tvmname = '[table_name]'
AND dbase.databasename = '[database_name]';
➠ Valid datatypes for identity columns
➠ Syntax for Identity columns
BIGINT GENERATED [ ALWAYS | BY DEFAULT] AS IDENTITY
(
START WITH [start_vale]
INCREMENT BY [increment_by_value]
MAXVALUE [Maximum value ]
[NO CYCLE|CYCLE]
)
*** Failure 5785 Invalid value for Identity Column parameter MAXVALUE.
*** Failure 7545 Numbering for Identity Column tablename.identyColumnName is over its limit.
➠ Examples of tables with Identity Columns
CREATE MULTISET TABLE tutorial_db.employee_id_column1
(
emp_no BIGINT GENERATED ALWAYS AS IDENTITY,
emp_name VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC,
job_title VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC
)
PRIMARY INDEX ( emp_name );
START WITH 1
INCREMENT BY 1
MINVALUE -999999999999999999
MAXVALUE 999999999999999999
NO CYCLE
CREATE MULTISET TABLE tutorial_db.employee_id_column
(
emp_no INTEGER GENERATED ALWAYS AS IDENTITY
(
START WITH 1
INCREMENT BY 1
MAXVALUE 2000000000
NO CYCLE
),
emp_name VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC,
job_title VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC
)
PRIMARY INDEX ( emp_name );
CREATE MULTISET TABLE tutorial_db.employee_id_column
(
emp_no INTEGER GENERATED ALWAYS AS IDENTITY
(
START WITH 1
INCREMENT BY 1
MAXVALUE 2000000000
CYCLE
),
emp_name VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC,
job_title VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC
)
PRIMARY INDEX ( emp_name );
➠ Limitations of tables with Identity Column
*** Failure 3706 Syntax error: A table may not have more than one identity column.
*** Failure 3706 Syntax error: Identity Column in a NoPI table is unsupported.
*** Failure 5784 Illegal usage of Identity Column emp_no.
*** Failure 5466 Error in Secondary Index DDL, Order by column is non-numeric, or is more than 4 bytes.