CREATE TABLE sentencia

La sentencia CREATE TABLE define una tabla. Esta definición debe incluir el nombre de la tabla y los nombres y atributos de sus columnas. La definición puede incluir otros atributos de la tabla, como la clave primaria y el espacio de tablas.

Invocación para CREATE TABLE

Esta sentencia puede incorporarse en un programa de aplicación o emitirse de forma interactiva. Es una instrucción ejecutable que puede prepararse dinámicamente solo si el comportamiento DYNAMICRULES RUN está en vigor. Para obtener más información, consulte ID de autorización y SQL dinámico.

Autorización para CREATE TABLE

El conjunto de privilegios que se define a continuación debe incluir al menos uno de los siguientes:

  • El privilegio CREATETAB para la base de datos especificada explícitamente por la cláusula IN.

    Si no se especifica la cláusula IN, se requiere el privilegio CREATETAB en la base de datos DSNDB04.

  • Autoridad DBADM, DBCTRL o DBMAINT para la base de datos especificada explícitamente por la cláusula IN. Si no se especifica la cláusula IN, se requiere la autoridad DBADM, DBCTRL o DBMAINT para el mantenimiento de la base de datos ( DSNDB04 ).
  • Autorización SYSADM o SYSCTRL
  • DBADM del sistema
  • Inicio del cambioAutoridad de instalación SYSOPR (cuando el SQLID actual del proceso está configurado como SYSINSTL)fin del cambio

Si el espacio de la tabla se crea de forma implícita, el conjunto de privilegios que se define a continuación debe incluir al menos uno de los siguientes:

  • El privilegio CREATETS para la base de datos explícitamente especificada por la cláusula IN.

    Si no se especifica la cláusula IN, se requiere el privilegio CREATETS en la base de datos DSNDB04.

  • Autoridad DBADM, DBCTRL o DBMAINT para la base de datos especificada explícitamente por la cláusula IN. Si no se especifica la cláusula IN, se requiere la autoridad DBADM, DBCTRL o DBMAINT para el mantenimiento de la base de datos ( DSNDB04 ).
  • Autorización SYSADM o SYSCTRL
  • Inicio del cambioAutoridad de instalación SYSOPR (cuando el SQLID actual del proceso está configurado como SYSINSTL)fin del cambio
El conjunto de privilegios también debe tener el privilegio USE para los siguientes objetos:
  • Para el espacio de la tabla, si se especifica uno en la cláusula IN
  • Para el grupo de búferes y el grupo de almacenamiento predeterminados de la base de datos, si se especifica una base de datos en la cláusula IN

Inicio del cambioSi especifica un nombre de espacio de tabla, también debe tener la autoridad SYSADM o SYSCTRL o la autoridad DBADM para la base de datos.fin del cambio

Para las tablas que se crean en una base de datos implícita, la autoridad de la base de datos debe estar en DSNDB04.

Se pueden requerir privilegios adicionales en las siguientes condiciones:

  • Se especifica la cláusula IN, LIKE o FOREIGN KEY.
  • El tipo de datos de una columna es un tipo distinto.
  • El espacio de la tabla se crea implícitamente.
  • Se especifica un fullselect.
  • Una columna se define como una columna de etiquetas de valores.
Inicio del cambio

Conjunto de privilegios:

Si la sentencia está incluida en un programa de aplicación, el conjunto de privilegios son los privilegios que posee el propietario del paquete. Si la aplicación está enlazada en un contexto de confianza con la cláusula ROLE AS OBJECT OWNER especificada, un rol es el propietario de la tabla y el conjunto de privilegios son los privilegios que tiene ese rol.

Si la sentencia se prepara dinámicamente, el conjunto de privilegios son los privilegios que tiene el ID de autorización SQL del proceso. Si el proceso está dentro de un contexto de confianza y se especifica la cláusula ROLE AS OBJECT OWNER, el conjunto de privilegios es el conjunto de privilegios que tiene el rol que está asociado con el ID de autorización principal del proceso, y el propietario de la tabla es ese rol.

Si ROLE AS OBJECT OWNER no está en vigor y la tabla está explícitamente calificada, el calificador explícito es el propietario de la tabla y el conjunto de privilegios debe incluir uno de los siguientes:

  • Autoridad DBADM o DBCTRL para la base de datos
  • Autorización DBADM del sistema
  • Autorización SYSCTRL
  • Autorización SYSADM
fin del cambio

Sintaxis para CREATE TABLE

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualCREATE TABLEnombre-tabla(,definición-columnadefinición-períodorestricción-unicidadrestricción-referenciarestricción-comprobación)LIKEnombre-tablanombre-vistaopciones-copiatabla-resultados-asopciones-copiadefinición-consulta-materializada1INnombre-base-datos. nombre-del-espacio-de-la-tablaIN DATABASEnombre-base-datosIN ACCELERATORnombre-aceleradorcláusula-particionamientocláusula de organización2EDITPROCnombre-del-programaWITH ROW ATTRIBUTESWITHOUT ROW ATTRIBUTESVALIDPROCnombre-del-programaAUDIT NONEAUDIT CHANGESAUDIT ALLOBIDenteroDATA CAPTURE NONEDATA CAPTURE CHANGESWITH RESTRICT ON DROPCCSIDASCIIEBCDICUNICODENOT VOLATILECARDINALITYVOLATILECARDINALITYLOGGEDNOT LOGGEDimptscmp-parameter3COMPRESS NOCOMPRESS YESCOMPRESS YES FIXEDLENGTHCOMPRESS YES HUFFMANAPPENDNOYESparámetro impdssize4DSSIZEenteroGtbsbp-parameter5BUFFERPOOLBPNAMEMEMBER CLUSTERTRACKMODimptkmod-parameter6TRACKMOD YESTRACKMOD NOPAGENUMpáginas: parámetro de número de páginas7PAGENUM RELATIVE8PAGENUM ABSOLUTENO KEY LABELKEY LABELnombre-etiqueta-clave
Notas:

definición de columna:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualnombre-columnatipo de datos1 2NOT NULLcláusula-generadarestricción de columnaWITHDEFAULTconstanteSESSION_USERUSERCURRENT SQLIDNULL3nombre de la función(constanteSESSION_USERUSERCURRENT SQLIDNULL)FIELDPROCnombre-del-programa(,constante)AS SECURITY LABEL4IMPLICITLY HIDDENINLINE LENGTHentero5
Notas:
  • 1 El tipo de datos es opcional si se especifica la cláusula as-row-change-timestamp
  • 2 La misma cláusula no debe especificarse más de una vez.
  • 3 La forma cast-function-name del valor DEFAULT solo se puede utilizar con una columna que esté definida como un tipo distinto.
  • 4 AS SECURITY LABEL solo se puede especificar para un tipo de datos CHAR(8) y requiere que se especifiquen las cláusulas NOT NULL y WITH DEFAULT.
  • 5 La LONGITUD EN LÍNEA solo se aplica a una columna con un tipo de datos LOB o un tipo distinto basado en un tipo de datos LOB.

tipo de datos:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualtipo-incorporadonombre-tipo-diferenciado

tipo integrado:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualSMALLINTINTEGERINTBIGINTDECIMALDECNUMERIC(5,0)( entero, entero)FLOAT(53)( entero)REALDOUBLEPRECISIONDECFLOAT(34)(16)CHARACTERCHAR(1)( entero)CHARACTERCHARVARYINGVARCHAR( entero)FORSBCSMIXEDBITDATACCSID 12081CHARACTERCHARLARGE OBJECTCLOB(1M)( enteroKMG)FORSBCSMIXEDBITDATACCSID 12081GRAPHIC(1)( entero)VARGRAPHIC(entero)DBCLOB(1M)( enteroKMG)CCSID 12001BINARY(1)( entero)BINARY VARYINGVARBINARY( entero)BINARY LARGE OBJECTBLOB(1M)( enteroKMG)DATETIMETIMESTAMP(6)(entero)WITHOUT TIME ZONEWITH TIME ZONEROWIDXML(Modificador de tipo XML)
Notas:
  • 1 La cláusula CCSID solo debe especificarse para una columna de cadena de caracteres o cadena gráfica en una tabla EBCDIC. La cláusula CCSID no debe especificarse con una expresión no determinista.

Modificador de tipo XML:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualXMLSCHEMA ,Especificación del esquema XMLELEMENTnombre-elemento

Especificación del esquema XML:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualIDregistered-XML-schema-nameURIespacio de nombres de destinoNO NAMESPACELOCATIONesquema-localización

cláusula-generada:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualGENERATEDALWAYSBY DEFAULTcláusula-as-identitycláusula-indicación-hora-cambio-filaGENERATEDALWAYScláusula-id-inicio-transacción-filacláusula-indicación-hora-transacción-filacláusula-expresión-generada

as-identity-clause:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualAS IDENTITY (1START WITH 1START WITHconstante numéricaINCREMENT BY 1INCREMENT BYconstante numéricaNO MINVALUEMINVALUEconstante numéricaNO MAXVALUEMAXVALUEconstante numéricaNO CYCLECYCLECACHE 20NO CACHECACHEconstante enteraNO ORDERORDER)
Notas:
  • 1 Se pueden especificar comas separadoras entre los atributos cuando se define una columna de identidad.

as-row-change-timestamp-clause:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualFOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP

as-row-transaction-start-id-clause:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualAS TRANSACTION START ID

as-row-transaction-timestamp-clause:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualAS ROW BEGINSTARTEND

as-generated-expression-clause:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualAS(expresión no determinista)

expresión no determinista:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualDATA CHANGE OPERATIONregistro-especialvariable de sesión

registro especial:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual1CURRENT CLIENT_ACCTNGCURRENT CLIENT_APPLNAMECURRENT CLIENT_CORR_TOKENCURRENT CLIENT_USERIDCURRENT CLIENT_WRKSTNNAMECURRENT SERVERCURRENT SQLIDSESSION_USER2
Notas:
  • 1 Esta definición de registro especial es específica de este contexto, como parte de la expresión no determinista.
  • 2 USER puede especificarse como sinónimo de SESSION_USER.

variable de sesión:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual1SYSIBM.PACKAGE_NAMESYSIBM.PACKAGE_SCHEMASYSIBM.PACKAGE_VERSION
Notas:
  • 1 Esta definición de variable de sesión es específica de este contexto, como parte de una expresión no determinista.

restricción de columna:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualCONSTRAINTnombre-restricciónPRIMARY KEYUNIQUEcláusula-referenciasCHECK(condición-comprobación)

periodo-definición:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual PERIOD FOR SYSTEM_TIME(nombre-principio-columna,nombre-fin-columna)BUSINESS_TIME(nombre-principio-columna,nombre-fin-columnaEXCLUSIVEINCLUSIVE)

restricción única:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualCONSTRAINTnombre-restricciónPRIMARY KEYUNIQUE(, nombre-columna,HORARIO LABORAL SIN SOLAPAMIENTOS1)
Notas:
  • 1 Si BUSINESS_TIME WITHOUT OVERLAPS se especifica, el periodo BUSINESS_TIME no se superpondrá en periodos de tiempo para los mismos valores de nombre de columna.

restricción referencial:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualCONSTRAINTnombre-restricciónFOREIGN KEY(, nombre-columna,PERIODBUSINESS_TIME)cláusula-referencias

referencias-cláusula:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualREFERENCESnombre-tabla-padre(,nombre-columna,PERIODBUSINESS_TIME)ON DELETERESTRICTNO ACTIONCASCADESET NULLENFORCEDNOT ENFORCEDENABLE QUERY OPTIMIZATION

restricción de verificación:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualCONSTRAINTnombre-restricciónCHECK (condición-comprobación)

as-result-table:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual (,nombre-columna) AS (selección completa) WITH NO DATA

opciones de copia:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual1EXCLUDING IDENTITYCOLUMN ATTRIBUTESINCLUDING IDENTITYCOLUMN ATTRIBUTESEXCLUDING ROW CHANGE TIMESTAMPCOLUMN ATTRIBUTESINCLUDING ROW CHANGE TIMESTAMPCOLUMN ATTRIBUTESEXCLUDINGCOLUMN DEFAULTS2INCLUDINGCOLUMNDEFAULTSUSING TYPE DEFAULTSEXCLUDING XML TYPE MODIFIERS3
Notas:
  • 1 Estas cláusulas pueden especificarse en cualquier pedido y no deben especificarse más de una vez.
  • 2 EXCLUYENDO LOS DEFAULT DE COLUMNA, INCLUYENDO LOS DEFAULT DE COLUMNA, y UTILIZANDO LOS DEFAULT DE TIPO no deben especificarse con la cláusula LIKE.
  • 3 EXCLUYENDO MODIFICADORES DE TIPO XML debe especificarse con la cláusula LIKE si la tabla identificada tiene un modificador de tipo XML y ninguna de las columnas XML de la nueva tabla tiene un modificador de tipo XML. EXCLUIR MODIFICADORES DE TIPO XML no es compatible cuando se identifica una vista en una cláusula LIKE y la vista contiene columnas XML.

definición-consulta-materializada

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual(,nombre-columna)AS ( selección completa)opciones-tabla-renovable

refrescable-table-options:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualDATA INITIALLY DEFERREDREFRESH DEFERRED 1MAINTAINED BY SYSTEMMAINTAINED BY USERENABLE QUERY OPTIMIZATIONDISABLE QUERY OPTIMIZATION
Notas:
  • 1 La misma cláusula no debe especificarse más de una vez.

cláusula de separación:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual PARTITION BY SIZEEVERYconstante enteraGPARTITION BY RANGE(,expresión-partición)(,elemento-partición)

expresión de partición:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualnombre-columnaNULLS LAST ASCDESC

elemento de partición:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualPARTITIONenteroENDINGAT(,constanteMAXVALUEMINVALUE)partición-hash-space1INCLUSIVE
Notas:
  • 1 FL 504 Las tablas organizadas por hash están en desuso. A partir de la versión Db2 12, los paquetes vinculados con APPLCOMPAT( V12R1M504 ) o superior no pueden crear tablas organizadas por hash ni modificar tablas existentes para utilizar la organización por hash. Las tablas organizadas existentes de hash seguirán siendo compatibles, pero es probable que dejen de serlo en el futuro.

descripción para CREATE TABLE

nombre-tabla
Indica el nombre de la tabla. El nombre, incluido el calificador implícito o explícito, no debe identificar una tabla, vista, alias o sinónimo que exista en el servidor actual o una tabla que exista en la tabla de catálogo SYSIBM.SYSPENDINGOBJECTS. El nombre no calificado no debe ser el mismo que un sinónimo existente.

Si el nombre está calificado, puede ser un nombre de dos o tres partes. Si se utiliza un nombre de tres partes, la primera parte debe coincidir con el valor del campo DB2 NOMBRE DE UBICACIÓN en el panel de instalación DSNTIPR en el servidor actual. (Si el servidor actual no es el local Db2, este nombre no es necesariamente el nombre en el registro especial CURRENT SERVER)

Para más información, consulte las Directrices para los nombres de las tablas.

Inicio del cambioFL 502 ETIQUETA CLAVE nombre-etiqueta-clave o SIN ETIQUETA CLAVEfin del cambio
Inicio del cambioEspecifica si la etiqueta de clave se especifica a nivel de tabla para el cifrado. El nombre de la tabla debe identificar una tabla que resida en un espacio de tabla universal o en un espacio de tabla particionado (no UTS). Si especifica un nombre de espacio de tabla utilizando la cláusula IN, se requiere una REORG posterior del espacio de tabla para que el valor de la etiqueta de clave surta efecto.
ETIQUETA DE CLAVE nombre-de-etiqueta-de-clave
Especifica la etiqueta de clave predeterminada que se utiliza para cifrar todos los espacios de tabla y espacios de índice asociados con la tabla. Esto incluye espacios de tabla base, espacios de tabla auxiliares, espacios de tabla XML, espacios de índice y espacios de tabla clon, independientemente de si se crean explícita o implícitamente. Los usuarios deben configurar la etiqueta de clave para las tablas de archivo o historial de forma independiente.

El conjunto de datos debe estar administrado por Db2, para todos los espacios de tabla y espacios de índice asociados con la tabla.

El nombre de la tabla no debe identificar uno de los siguientes:
  • Una mesa solo para aceleradores.
  • Una mesa auxiliar.

La etiqueta de la clave debe estar definida en ICSF. Db2 RACF® El ID de usuario o grupo debe tener permiso de acceso a la etiqueta de clave en RACF.

La etiqueta de clave puede heredarse o anularse cuando se asigna el conjunto de datos. Para obtener más información sobre el orden de precedencia, consulte Notas.

NO KEY LABEL
Indica que no hay ninguna etiqueta de clave especificada a nivel de tabla para el cifrado.
fin del cambio

definición-columna

nombre-columna
Es el nombre de una columna de la tabla. Para una tabla dependiente, se pueden nombrar hasta 749 columnas. Para una tabla que no sea dependiente, este número es 750. No califique el nombre de la columna y no utilice el mismo nombre para más de una columna de la tabla.
tipo integrado

Especifica el tipo de datos de la columna como uno de los siguientes tipos de datos integrados y, para los tipos de datos de cadena de caracteres, especifica el subtipo.

Para más información, consulte Tipos de datos en Db2 for z/OS.

Para obtener más información sobre cómo definir una tabla con una columna LOB (CLOB, BLOB o DBCLOB), consulte Creación de una tabla con columnas LOB.

Si se especifica EN ACELERADOR, no se admiten todos los tipos de datos. Por ejemplo, DECFLOAT, LOB, ROWID, TIMESTAMP WITH TIME ZONE y XML no son compatibles. Para obtener una lista completa de los tipos de datos compatibles con los aceleradores, consulte Tipos de datos compatibles.

SMALLINT
Para especificar un entero pequeño.
INTEGER o INT
Para especificar un entero grande.
BIGINT
Para especificar un entero superior.
DECIMAL( entero, entero ) o DEC( entero, entero )
DECIMAL( entero ) o DEC( entero )
DECIMAL o DEC
Para especificar un número decimal. El primer número entero es la precisión del número. Es decir, el número total de dígitos, que puede oscilar entre 1 y 31. El segundo número entero es la escala del número. Es decir, el número de dígitos a la derecha del punto decimal, que puede variar de 0 a la precisión del número.

Puede utilizar DECIMAL(p) para DECIMAL(p,0) y DECIMAL para DECIMAL(5,0).

También puede utilizar la palabra NUMERIC en lugar de DECIMAL. Por ejemplo, NUMERIC(8) es equivalente a DECIMAL(8). A diferencia de DECIMAL, NUMERIC no admite abreviaturas.

DECFLOAT (entero)
Para especificar un número de coma flotante decimal. El valor del entero debe ser 16 o 34 y representa el número de dígitos significativos que se pueden almacenar. Si se omite el entero, la columna DECFLOAT podrá representar 34 dígitos significativos.
FLOAT(entero)
FLOAT
Para un número de coma flotante. Si el número entero está en el rango de 1 a 21 inclusive, el formato es de punto flotante de precisión simple. Si el número entero está en el rango de 22 a 53 inclusive, el formato es de punto flotante de doble precisión.

Puede utilizar DOBLE PRECISIÓN o FLOAT para FLOAT(53).

REAL
Para coma flotante de precisión simple.
DOBLE o DOBLE PRECISIÓN
Para doble precisión de punto flotante
CHARACTER( entero ) o CHAR( entero )
CARÁCTER o CAR
Para una cadena de caracteres de longitud fija de longitud entera, que puede oscilar entre 1 y 255. Si se omite la especificación de longitud, se asume una longitud de 1 carácter.
Inicio del cambioCCSID 1208fin del cambio
Inicio del cambioFL 500Especifica que la columna es una columna Unicode codificada en UTF-8. Esta cláusula no debe especificarse para una tabla ASCII o Unicode.fin del cambio
VARCHAR( entero ) , CHAR VARYING( entero ), o CHARACTER VARYING( entero )
Para una cadena de caracteres de longitud variable de un entero de longitud máxima, que puede variar de 1 al tamaño máximo de registro menos 10 bytes. Consulte la Tabla 5 para determinar el tamaño máximo de registro.
CCSID 1208
UTF-8 Especifica que la columna es una columna Unicode codificada en UTF-8. Esta cláusula no debe especificarse para una tabla ASCII o Unicode.
PARA subtipo DATOS
Especifica un subtipo para una columna de cadena de caracteres, que es una columna con un tipo de datos CHAR, VARCHAR o CLOB. No utilice la cláusula DATA del subtipo FOR con columnas de cualquier otro tipo de datos (incluido cualquier tipo distinto). el subtipo puede ser uno de los siguientes:
SBCS
La columna contiene datos de un solo byte.
MIXED
La columna contiene datos mezclados. No especifique MIXED si el valor del campo MIXED DATA en el panel de instalación DSNTIPF es NO, a menos que también se especifique la cláusula CCSID UNICODE, o la tabla se esté creando en un espacio de tabla o base de datos Unicode.
BIT
La columna contiene datos BIT. No especifique BIT para una columna CLOB.

Solo las cadenas de caracteres son válidas cuando el subtipo es BIT.

Si no se especifica la cláusula DATA del subtipo FOR, la columna se define con un subtipo predeterminado. Para datos ASCII o EBCDIC:

  • El valor predeterminado es SBCS cuando el valor del campo MIXED DATA en el panel de instalación DSNTIPF es NO.
  • El valor predeterminado es MIXED cuando el valor es YES.

Para datos Unicode, el subtipo predeterminado es MIXED.

Una columna de etiquetas de seguridad siempre se considera datos SBCS, independientemente del esquema de codificación de la tabla.

CLOB( entero [K|M|G]), OBJETO GRANDE CHAR( entero [K|M|G]), u OBJETO GRANDE CHARACTER( entero [K|M|G])
CLOB, CHAR LARGE OBJECT o CHARACTER LARGE OBJECT
Para una cadena de objeto de gran tamaño (CLOB) de la longitud máxima especificada en bytes. La longitud máxima debe estar en el rango de 1 a 2147483647. Una columna CLOB tiene una longitud variable. No se puede hacer referencia a él en ciertos contextos, independientemente de su longitud máxima. Para más información, consulte Restricciones en el uso de LOB.
Cuando no se especifica un número entero, la longitud predeterminada es 1M. El valor máximo que se puede especificar para un número entero depende de si también se especifica un indicador de unidades, como se muestra en la siguiente lista.
entero
El valor máximo para un entero es 2147483647. La longitud máxima de la cadena es un número entero.
entero K
El valor máximo para un número entero es 2097152. La longitud máxima es 1024 veces el número entero.
ent ero M
El valor máximo para un número entero es 2048. La longitud máxima es 1 048 576 veces el número entero.
ent ero G
El valor máximo de entero es 2. La longitud máxima es 1.073.741.824 veces el número entero.

el número entero puede separarse de K, M o G por 0 o más espacios.

Si especifica un valor que se evalúa como 2 gigabytes (2.147.483.648), Db2 utiliza un valor que es un byte menor, o 2147483647.

Inicio del cambioCCSID 1208fin del cambio
Inicio del cambioFL 500Especifica que la columna es una columna Unicode codificada en UTF-8. Esta cláusula no debe especificarse para una tabla ASCII o Unicode.fin del cambio
GRÁFICO (entero )
GRAPHIC
Para una cadena gráfica de longitud fija de longitud entera, que puede variar entre 1 y 127. Si se omite la especificación de la longitud, se asume una longitud de 1 carácter.Inicio del cambio
CCSID 1200
FL 500 Especifica que la columna es una columna Unicode codificada en UTF-16. Esta cláusula no debe especificarse para una tabla ASCII o Unicode.
fin del cambio
VARGRÁFICO (entero )
Para una cadena gráfica de longitud variable de un entero de longitud máxima, que debe estar comprendida entre 1 y n/2, donde n es el tamaño máximo de la fila menos 2 bytes.
CCSID 1200
UTF-16 Especifica que la columna es una columna Unicode codificada en UTF-8. Esta cláusula no debe especificarse para una tabla ASCII o Unicode.
DBCLOB(ent ero [K|M|G])
DBCLOB
Para una cadena de objetos grandes de caracteres de doble byte (DBCLOB) de la longitud máxima especificada en caracteres de doble byte. La longitud máxima debe estar en el rango de 1-1 073 741 823. Una columna DBCLOB tiene una longitud variable. No se puede hacer referencia a él en ciertos contextos, independientemente de su longitud máxima. Para más información, consulte Restricciones en el uso de LOB.

Cuando no se especifica un número entero, la longitud predeterminada es 1M. El significado del entero K|M|G es similar al de CLOB. La diferencia es que el número especificado es el número de caracteres de doble byte.

el número entero puede separarse de K, M o G por 0 o más espacios.

CCSID 1200
UTF-16 Especifica que la columna es una columna Unicode codificada en UTF-8. Esta cláusula no debe especificarse para una tabla ASCII o Unicode.
BINARY(entero)
Una cadena binaria de longitud entera fija. El número entero puede variar entre 1 y 255. Si se omite la especificación de longitud, se supone una longitud de 1 byte.
BINARY VARYING (entero ) o VARBINARY (entero)
Una cadena binaria de longitud variable de entero de longitud máxima, que puede variar entre 1 y 32704. La longitud está limitada por el tamaño de página del espacio de la tabla.
BLOB (entero [K|M|G] o OBJETO GRANDE BINARIO (entero [K|M|G])
BLOB u OBJETO GRANDE BINARIO
Para una cadena de objeto binario grande (BLOB) de la longitud máxima especificada en bytes. La longitud máxima debe estar en el rango de 1-2147483647. Una columna BLOB tiene una longitud variable. No se puede hacer referencia a él en ciertos contextos, independientemente de su longitud máxima. Para más información, consulte Restricciones en el uso de LOB.

Cuando no se especifica un número entero, la longitud predeterminada es 1M. El significado del entero K|M|G es el mismo que para CLOB.

el número entero puede separarse de K, M o G por 0 o más espacios.

FECHA
Para la fecha.
HORA
Para la hora.
TIMESTAMP( entero ) WITHOUT TIME ZONE
Para una indicación de fecha y hora. el número entero especifica el atributo opcional de precisión de marca de tiempo y debe estar en el rango de 0 a 12. La precisión de la marca de tiempo denota el número de dígitos de segundos fraccionarios que se incluyen en la marca de tiempo. El valor predeterminado es 6.
TIMESTAMP( entero ) WITH TIME ZONE
Para una marca de tiempo con zona horaria. el número entero especifica el atributo opcional de precisión de marca de tiempo y debe estar en el rango de 0 a 12. La precisión de la marca de tiempo denota el número de dígitos de segundos fraccionarios que se incluyen en la marca de tiempo. El valor predeterminado es 6.
ROWID
Para un tipo de ID de fila.

Inicio del cambioUna tabla puede contener como máximo dos columnas ROWID. Si una tabla contiene dos columnas ROWID c, una columna se genera implícitamente mediante Db2 y la otra columna se define explícitamente como un ROWID sin el atributo IMPLICITLY HIDDEN.fin del cambio Los valores de una columna ROWID son únicos para cada fila de la tabla y no pueden actualizarse. Debe especificar NOT NULL con ROWID.

XML
Para un documento XML. Sólo se pueden insertar documentos XML con el formato correcto en una columna XML.

Si la columna XML es la primera columna XML que se crea para la tabla, se crea implícitamente una columna BIGINT DOCID que se utiliza para almacenar un identificador de documento único para las columnas XML de una fila.

XMLSCHEMA
Especifica uno o más esquemas XML que se utilizan para validar el valor XML. El mismo esquema XML no puede especificarse más de una vez.

Si el valor XML ya ha sido validado, por ejemplo, si el valor XML es el resultado de la función DSN_XMLVALIDATE o de una columna XML con un modificador de tipo, y el esquema XML con el que se valida el valor XML es uno de los esquemas especificados en el modificador de tipo XML, Db2 acepta el valor XML sin revalidarlo.

Especificación del esquema XML
Especifica un esquema XML. El esquema XML puede identificarse utilizando el nombre de esquema XML registrado o el espacio de nombres de destino del esquema seguido de una ubicación de esquema opcional. Cualquier esquema XML al que se haga referencia en esta cláusula debe registrarse en el repositorio de esquemas XML antes de su uso.
ID registered-XML-schema-name
Identifica un esquema XML mediante su nombre de esquema XML registrado. El nombre debe identificar de forma única un esquema XML existente en el repositorio de esquemas XML del servidor actual. Si no existe ningún esquema XML con este nombre, se devuelve un error.

El calificador de esquema debe ser SYSXSR.

URI espacio de nombres de destino
Especifica el URI del espacio de nombres de destino del esquema XML. El valor del URI del espacio de nombres de destino es una constante de cadena de caracteres que no está vacía. El URI debe ser el espacio de nombres de destino de un esquema XML registrado y, si no se especifica ninguna cláusula LOCATION, debe identificar de forma única el esquema XML registrado.
NO NAMESPACE
Especifica que el esquema XML no tenga espacio de nombres de destino. Debe haber un esquema XML registrado que no tenga un espacio de nombres de destino. Si no se especifica ninguna cláusula LOCATION, solo debe haber un esquema XML registrado de este tipo.
LOCATION esquema-localización
Especifica el URI de ubicación del esquema XML del esquema XML. El valor de schema-location es una cadena de caracteres constante que no está vacía. El URI de ubicación del esquema, combinado con el URI del espacio de nombres de destino, debe identificar un esquema XML registrado.
ELEMENT nombre-elemento
Especifica el nombre de la declaración del elemento global. element-name debe coincidir con el nombre local del nodo del elemento raíz en el documento XML de instancia. El nombre del espacio de nombres del nodo del elemento raíz debe ser el mismo que el URI del espacio de nombres de destino.
distinct-type-name
Especifica que el tipo de datos de la columna es un tipo distinto (un tipo de datos definido por el usuario). La longitud, precisión y escala de la columna son, respectivamente, la longitud, precisión y escala del tipo de fuente del tipo distinto. El conjunto de privilegios debe incluir implícita o explícitamente el privilegio USAGE en el tipo distinto.

El esquema de codificación del tipo distinto debe ser el mismo que el esquema de codificación de la tabla. El subtipo para el tipo distinto, si tiene el atributo, es el subtipo con el que se creó el tipo distinto.

Si la columna se va a utilizar en la definición de la clave externa de una restricción referencial, el tipo de datos de la columna correspondiente de la clave principal debe tener el mismo tipo distinto.

NO NULL
Evita que la columna contenga valores nulos. La omisión de NOT NULL implica que la columna puede contener valores nulos.
restricción de columna
La restricción de columna de una definición de columna proporciona un método abreviado para definir una restricción compuesta por una sola columna. Por lo tanto, si se especifica una restricción de columna en la definición de la columna C, el efecto es el mismo que si esa restricción se especificara como una restricción única, una restricción referencial o una restricción de verificación en la que C es la única columna identificada.
CONSTRAINT nombre de la restricción
Indica el nombre de la restricción. Si no se especifica un nombre de restricción, se genera un nombre de restricción único. Si se especifica el nombre, debe ser diferente de los nombres de cualquier restricción referencial, de verificación, de clave principal o de clave única especificada previamente en la tabla.
PRIMARY KEY
Proporciona un método abreviado para definir una clave principal compuesta por una sola columna. De este modo, si se especifica PRIMARY KEY en la definición de la columna C, el efecto es el mismo que si se especifica la cláusula PRIMARY KEY(C) como cláusula separada.
La cláusula NOT NULL debe especificarse con esta cláusula. La CLAVE PRIMARIA no puede especificarse más de una vez en una definición de columna, y no debe especificarse si la cláusula UNIQUE está especificada en la definición. Esta cláusula tampoco debe especificarse si la definición es para uno de los siguientes tipos de columnas:
  • una columna LOB
  • Una columna ROWID
  • Inicio del cambiouna columna de tipo distinto basada en un tipo de datos LOB o ROWIDfin del cambio
  • Una columna XML
  • Una columna de indicación de fecha y hora de cambio de fila
  • una columna en una tabla de solo acelerador

La tabla se marca como no disponible hasta que se cree explícitamente su índice primario, a menos que la instrucción CREATE TABLE sea procesada por el procesador de esquemas o que el espacio de tablas que contiene la tabla se cree implícitamente En ese caso, Db2 crea implícitamente un índice para hacer cumplir la unicidad de la clave principal y la definición de la tabla se considera completa. (Para obtener más información sobre los índices creados implícitamente, consulte Índices creados implícitamente )

UNIQUE
Proporciona un método abreviado para definir una clave única compuesta por una sola columna. Por lo tanto, si se especifica UNIQUE en la definición de la columna C, el efecto es el mismo que si se especificase la cláusula UNIQUE(C) como una cláusula separada.
La cláusula NOT NULL debe especificarse con esta cláusula. UNIQUE no puede especificarse más de una vez en una definición de columna y no debe especificarse si la cláusula PRIMARY KEY está especificada en la definición de columna o si la definición es para uno de los siguientes tipos de columnas:
  • una columna LOB
  • Una columna ROWID
  • Inicio del cambiouna columna de tipo distinto basada en un tipo de datos LOB o ROWIDfin del cambio
  • Una columna XML
  • Una columna de indicación de fecha y hora de cambio de fila
  • una columna en una tabla de solo acelerador

La tabla se marca como no disponible hasta que se creen explícitamente todos los índices necesarios, a menos que la instrucción CREATE TABLE sea procesada por el procesador de esquemas o que el espacio de tabla que contiene la tabla se cree implícitamente En ese caso, Db2 crea implícitamente los índices que se requieren para las claves únicas y la definición de la tabla se considera completa. (Para obtener más información sobre los índices creados implícitamente, consulte Índices creados implícitamente )

cláusula-referencias
La cláusula references de una definición de columna proporciona un método abreviado para definir una clave foránea compuesta por una sola columna. Por lo tanto, si la cláusula references se especifica en la definición de la columna C, el efecto es el mismo que si la cláusula references se especificara como parte de una cláusula FOREIGN KEY en la que C es la única columna identificada.
No especifique la cláusula de referencias en la definición de los siguientes tipos de columnas porque estos tipos de columnas no pueden ser una clave externa:
  • una columna LOB
  • Una columna ROWID
  • una columna DECFLOAT
  • una columna de tipo distinto que se basa en un tipo de datos LOB, ROWID o DECFLOAT
  • Una columna XML
  • Una columna de indicación de fecha y hora de cambio de fila
  • Una columna de etiqueta de seguridad
COMPROBAR (comprobar estado)
CHECK (condición de verificación ) proporciona un método abreviado para definir una restricción de verificación que se aplica a una sola columna. Para cumplir con el estándar SQL, si se especifica CHECK en la definición de la columna C, no se debe hacer referencia a otras columnas que no sean C en la condición de verificación de la restricción de verificación. El efecto es el mismo que si la condición de comprobación se especificara como una cláusula separada.
DEFAULT
Especifica el valor predeterminado que se asigna a la columna en ausencia de un valor especificado en una operación de inserción o actualización o LOAD. DEFAULT no debe especificarse más de una vez en la misma definición de columna. No especifique DEFAULT para los siguientes tipos de columnas porque Db2 genera valores predeterminados:
  • Una columna de identidad (una columna que se define COMO IDENTIDAD)
  • Una columna ROWID (o un tipo distinto basado en un ROWID)
  • Una columna de indicación de fecha y hora de cambio de fila
  • Una columna de inicio de fila
  • Una columna de fin de fila
  • Una columna de identificación de inicio de transacción
  • Una columna XML

Si se especifica EN ACELERADOR, no especifique DEFAULT para una columna.

No especifique un valor después de la palabra clave DEFAULT para una columna de etiqueta de seguridad. Db2 proporciona el valor predeterminado para una columna de etiqueta de seguridad.

Si no se especifica un valor después de DEFAULT, el valor predeterminado depende del tipo de datos de la columna, de la siguiente manera:
Tipo de datos
Valor predeterminado
Numérico
0
Entero grande
0
Serie de caracteres de longitud fija
Blancos
Serie gráfica de longitud fija
Blancos
Serie binaria de longitud fija
Ceros hexadecimales
serie de longitud variable
Una serie de longitud 0
BLOB en línea
Ceros hexadecimales
En línea CLOB
Blancos
En línea DBCLOB
Blancos
Fecha
CURRENT DATE
Hora
CURRENT TIME
FECHA Y HORA (entero ) SIN ZONA HORARIA
FECHA Y HORA ACTUAL (p) SIN ZONA HORARIA, donde p es la precisión de la fecha y hora correspondiente.
FECHA Y HORA (entero ) CON ZONA HORARIA
FECHA Y HORA ACTUAL (p) CON ZONA HORARIA donde p es la precisión de la marca de tiempo correspondiente.

Si la columna se define como marca de tiempo con zona horaria, el valor predeterminado debe incluir una zona horaria.

Tipo diferenciado
El valor predeterminado del tipo de datos de origen

Se puede especificar un valor predeterminado distinto del que se indica anteriormente en una de las siguientes formas:

  • CON DEFAULT para un valor predeterminado de una cadena vacía
  • DEFAULT NULL para un valor predeterminado de nulo

La omisión de NOT NULL y DEFAULT en la definición de una columna, para una columna que no sea de identidad, es una especificación implícita de DEFAULT NULL. Para una columna de identidad, es una especificación implícita de NOT NULL, y Db2 genera valores predeterminados.

constante
Especifica una constante como valor predeterminado para la columna. El valor de la constante debe ajustarse a las reglas para asignar ese valor a la columna.

Una constante de carácter o cadena gráfica debe ser lo suficientemente corta para que su representación e UTF-8 a no requiera más de 1536. No se puede especificar una constante de cadena gráfica hexadecimal (GX).

Además, la longitud del valor constante no puede ser mayor que el atributo INLINE LENGTH para columnas LOB.

SESSION_USER o USER
Especifica el valor del registro especial SESSION_USER (USER) en el momento de una instrucción SQL de cambio de datos o LOAD como valor predeterminado para la columna. Si se especifica SESSION_USER, el tipo de datos de la columna debe ser una cadena de caracteres con un atributo de longitud mayor o igual a 8 caracteres cuando el valor se expresa en CCSID 37. Si el tipo de datos de la columna es un CLOB en línea, el atributo INLINE LENGTH debe ser mayor o igual a 8 caracteres cuando el valor se expresa como CCSID 37.
CURRENT SQLID
Especifica el valor del ID de autorización SQL del proceso en el momento de una operación de inserción o actualización o CARGA como valor predeterminado para la columna. Si se especifica CURRENT SQLID, el tipo de datos de la columna debe ser una cadena de caracteres con un atributo de longitud mayor o igual que el atributo de longitud del registro especial CURRENT SQLID. Si el tipo de datos de la columna es un CLOB en línea, el atributo INLINE LENGTH debe ser mayor o igual que el atributo de longitud del registro especial CURRENT SQLID.
Nulo
Especifica nulo como valor predeterminado para la columna. Si se especifica NOT NULL, no se debe especificar DEFAULT NULL con la misma definición de columna.
nombre de la función
El nombre de la función de reparto que coincide con el nombre del tipo distinto para la columna. Una función de reparto solo puede especificarse si el tipo de datos de la columna es un tipo distinto.

El nombre de esquema de la función de conversión, ya sea que se especifique explícitamente o se resuelva implícitamente a través de la resolución de funciones, debe ser el mismo que el nombre de esquema explícita o implícitamente especificado del tipo distinto.

constante
Especifica una constante como argumento. La constante debe ajustarse a las reglas de una constante para el tipo de fuente del tipo distinto. La longitud de la constante no puede ser mayor que el atributo LONGITUD INLINE para columnas LOB.
SESSION_USER o USER
Especifica el valor del registro especial SESSION_USER (USER) en el momento en que se inserta una fila como valor predeterminado para la columna. El tipo de origen del tipo distinto de la columna debe ser CHAR, VARCHAR o CLOB en línea con un atributo de longitud (atributo de longitud en línea para CLOB) que sea mayor o igual que el atributo de longitud del registro especial SESSION_USER.
CURRENT SQLID
Especifica el valor del registro especial CURRENT SQLID en el momento en que se inserta una fila como valor predeterminado para la columna. El tipo de origen del tipo distinto de la columna debe ser CHAR, VARCHAR o CLOB en línea con un atributo de longitud (o atributo de longitud en línea para CLOB) que sea mayor o igual que el atributo de longitud del registro especial CURRENT SQLID.
NULL
Especifica el valor NULL como argumento.

En una definición de columna determinada:

  • No se pueden especificar a la vez DEFAULT y FIELDPROC.
  • NO NULL y DEFAULT NULL no pueden especificarse ambos.
La Tabla 1 resume el efecto de especificar las diversas combinaciones de las cláusulas NOT NULL y DEFAULT en la cláusula de descripción de columna de la instrucción CREATE TABLE.
Tabla 1. Efecto de especificar combinaciones de las cláusulas NOT NULL y DEFAULT
Si NOT NULL es: Y el VALOR PREDETERMINADO es: El efecto es:
Especificado1 Omitido Se produce un error si no se proporciona un valor para la columna en una operación de inserción o actualización o CARGA.
Especificado sin operando Se utiliza el valor predeterminado no nulo definido por el sistema.
constante La constante especificada se utiliza como valor predeterminado.
SESSION_USER El valor del registro especial SESSION_USER en el momento de una operación de inserción o actualización o CARGA se utiliza como valor predeterminado.
CURRENT SQLID El ID de autorización SQL del proceso en el momento de una operación de inserción o actualización o CARGA se utiliza como valor predeterminado.
Nulo Se produce un error durante la ejecución de CREATE TABLE.
Omitido Omitido Equivale a una especificación implícita de DEFAULT NULL.
Especificado sin operando Se utiliza el valor predeterminado no nulo definido por el sistema.
constante La constante especificada se utiliza como valor predeterminado.
SESSION_USER El valor del registro especial SESSION_USER en el momento de la ejecución se utiliza como valor predeterminado.
CURRENT SQLID El ID de autorización SQL del proceso se utiliza como valor predeterminado.
Nulo Se utiliza el valor predeterminado nulo.
Nota : La tabla no se aplica a una columna con un tipo de datos ROWID o a una columna de identidad.
GENERATED
Especifica que Db2 genera valores para la columna. GENERADO debe especificarse si la columna debe considerarse uno de los siguientes tipos de columnas:
  • Una columna de identidad
  • Una columna de indicación de fecha y hora de cambio de fila.
  • Una columna ROWID
  • Una columna de inicio de fila
  • Una columna de fin de fila
  • Una columna de identificación de inicio de transacción
  • Una columna de expresión generada

GENERADO solo debe especificarse para estos tipos de columnas. GENERATED no debe especificarse con la cláusula default en una definición de columna.

No se debe especificar GENERATED si la definición de la columna hace referencia a variables globales.

ALWAYS
Especifica que Db2 siempre genera un valor para la columna cuando se inserta o actualiza una fila y se debe generar un valor predeterminado. SIEMPRE es el valor predeterminado y recomendado.
BY DEFAULT
Especifica que Db2 generará un valor para la columna cuando se inserte o actualice una fila y se deba generar un valor predeterminado, a menos que se especifique un valor explícito.

Para una columna de marca de tiempo de cambio de fila, Db2 inserta o actualiza un valor especificado, pero no verifica que el valor sea único para la columna, a menos que la columna de marca de tiempo de cambio de fila tenga una restricción única o un índice único que especifique solo la columna de marca de tiempo de cambio de fila.

Para una columna ROWID, Db2 utiliza un valor especificado solo si es un valor de ID de fila válido que fue generado previamente por Db2 y la columna tiene un índice único de una sola columna. Hasta que se cree este índice en la columna ROWID, no se pueden utilizar la operación de inserción o actualización de SQL ni la utilidad LOAD para agregar filas a la tabla.Si el espacio de la tabla se crea explícitamente y el valor del registro especial CURRENT RULES es 'STD' cuando se procesa la instrucción CREATE TABLE, o si el espacio de la tabla se crea implícitamente, Db2 crea implícitamente el índice en la columna ROWID. El nombre de este índice es «I», seguido de los diez primeros caracteres del nombre de la columna, seguidos de siete caracteres generados aleatoriamente. Si el nombre de la columna tiene menos de diez caracteres, Db2 añade caracteres de subrayado al final del nombre hasta que tenga diez caracteres. El índice creado implícitamente tiene el atributo COPY NO.

Para una columna de identidad, Db2 inserta un valor especificado, pero no verifica que sea un valor único para la columna, a menos que la columna de identidad tenga un índice único de una sola columna.

POR DEFECTO es el valor recomendado solo cuando se utiliza la propagación de datos.

FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP
Especifica que la columna es una columna de indicación de fecha y hora para la tabla. Db2 genera un valor para la columna de cada fila a medida que se inserta la fila, y para cualquier fila en la que se actualice cualquier columna. El valor que se genera para una columna de marca de tiempo de cambio de fila es una marca de tiempo que corresponde a la hora de inserción o actualización de la fila. Si se insertan o actualizan varias filas con una sola instrucción, el valor de la columna de marca de tiempo de cambio de fila puede ser diferente para cada fila.

Una tabla únicamente puede tener una columna ROW CHANGE TIMESTAMP.

Si se especifica el tipo de datos, debe ser TIMESTAMP SIN ZONA HORARIA con una precisión de 6.

Una columna de marca de tiempo de cambio de fila no puede tener una cláusula DEFAULT. Se debe especificar NOT NULL para una columna de marca de tiempo de cambio de fila.

AS TRANSACTION START ID

Especifica que el valor lo asigna Db2 cada vez que se inserta una fila en la tabla o se actualiza cualquier columna de la fila. Se requiere una columna de ID de inicio de transacción para una tabla temporal de período de sistema.

Db2 asigna un valor de marca de tiempo único por transacción o el valor nulo. El valor nulo se asigna a la columna transaction-start-ID si la columna es anulable. De lo contrario, el valor se genera utilizando el reloj de hora del día durante la ejecución de la primera instrucción de cambio de datos en la transacción que requiere que se asigne un valor a una columna de inicio de fila o a una columna de ID de inicio de transacción en la tabla, o cuando se elimina una fila en una tabla temporal de período de sistema. Si se insertan o actualizan varias filas en una sola transacción de SQL, los valores de la columna de ID de inicio de transacción son iguales para todas las filas y son exclusivos entre los valores que se generan para la columna en otra transacción.

Una tabla solo puede tener una columna de ID de inicio de transacción. Si no se especifica un tipo de datos, la columna se define como TIMESTAMP(12) SIN ZONA HORARIA. Si se especifica un tipo de datos, debe ser TIMESTAMP(12) SIN ZONA HORARIA o TIMESTAMP(12) CON ZONA HORARIA. Si la columna se define como TIMESTAMP WITH TIME ZONE, los valores se almacenan en UTC, con una zona horaria de +00:00. Una columna de ID de inicio de transacción no puede tener una cláusula DEFAULT. Una columna de ID de inicio de transacción no se puede actualizar.

Un valor para una columna de ID de inicio de transacción se compone de un valor TIMESTAMP(9) que es único por transacción por miembro de intercambio de datos seguido de 000 o tres dígitos que indican el ID del miembro de intercambio de datos.

AS ROW BEGIN
Inicio del cambioEspecifica que se asigne un valor de fecha y hora a la columna cada vez que se inserte una fila o se actualice cualquier columna de la fila. Si el valor de la variable global incorporada SYSIBM.TEMPORAL_LOGICAL_TRANSACTION_TIME en el momento de la inserción o actualización es nulo, el valor se genera utilizando una lectura del reloj de hora del día durante la ejecución de la primera instrucción de cambio de datos en la unidad de trabajo que requiere que se asigne un valor a una columna de inicio de fila o a una columna de ID de inicio de transacción en una tabla, o se elimina una fila en una tabla temporal de período del sistema. En caso contrario, se asigna a la columna de inicio de fila el valor de la variable global incorporada SYSIBM.TEMPORAL_LOGICAL_TRANSACTION_TIME en el momento de la inserción o actualización.fin del cambio

Una columna de inicio de fila está pensada para ser utilizada en una tabla temporal de período de sistema.

Una tabla solo puede tener una columna definida como AS ROW BEGIN. Si se especifica un tipo de datos, debe ser TIMESTAMP(12) SIN ZONA HORARIA o TIMESTAMP(12) CON ZONA HORARIA. Si la columna se define como TIMESTAMP(12) WITH TIME ZONE, los valores se almacenan en UTC, con una zona horaria de +00:00. Si no se especifica ningún tipo de datos, la columna se define como TIMESTAMP(12) SIN ZONA HORARIA. Una columna definida como una columna de inicio de fila no puede tener una cláusula DEFAULT y debe definirse como NOT NULL.

Las columnas de inicio de fila no se pueden actualizar.

Un valor para una columna de inicio de fila se compone de un valor TIMESTAMP(9) que es único por transacción por miembro de intercambio de datos seguido de 000 o tres dígitos que indican el ID del miembro de intercambio de datos.

AS ROW END
Especifica que un valor para el tipo de datos de la columna es asignado por Db2 cada vez que se inserta una fila o se actualiza cualquier columna de la fila. El valor que se asigna a una columna TIMESTAMP WITHOUT TIME ZONE es el valor TIMESTAMP « 9999-12-30-00.00.00.000000000000 ». El valor que se asigna a una columna TIMESTAMP WITH TIME ZONE es el valor TIMESTAMP ' 9999-12-30-00.00.00.000000000000 +00:00'.

Se requiere una columna de fin de fila como segunda columna de un período SYSTEM_TIME.

Una tabla solo puede tener una columna de fin de fila. Si no se especifica un tipo de datos, la columna se define como TIMESTAMP(12) SIN ZONA HORARIA. Si se especifica un tipo de datos, debe ser TIMESTAMP(12) SIN ZONA HORARIA o TIMESTAMP(12) CON ZONA HORARIA. Si la columna se define como TIMESTAMP WITH TIME ZONE, los valores se almacenan en UTC, con una zona horaria de +00:00. Una columna de final de fila no puede tener una cláusula DEFAULT y debe definirse como NOT NULL. Las columnas de fin de fila no se pueden actualizar.

cláusula-expresión-generada
Especifica que los valores de la columna son generados por Db2. El valor generado se asigna a la columna cada vez que se inserta una fila o se actualiza cualquier columna de la fila.
OPERACIÓN DE CAMBIO DE DATOS
Especifica que el gestor de la base de datos genera uno de los siguientes valores, dependiendo de la expresión especificada:
I
Operación de inserción.
U
Actualizar operación.
D
Operación de eliminación.

Una tabla solo puede tener una columna de OPERACIÓN DE CAMBIO DE DATOS. La columna debe definirse como CHAR(1). La columna no puede tener una cláusula DEFAULT y no debe definirse como NOT NULL.

Inicio del cambioLa columna es una columna de expresión generada no determinista.fin del cambio

No especifique ninguna de las siguientes cláusulas para la columna:

  • CCSID 1200
  • CCSID 1208
  • FIELDPROC
registro-especial
Especifica el valor del registro especial. La columna debe contener el valor del registro especial en el momento de la declaración de cambio de datos que asigna el valor a la columna. Si se insertan o actualizan varias filas con una sola instrucción SQL, el valor de la columna es el mismo para todas las filas.

el registro especial debe ser uno de los siguientes registros especiales, y la columna debe utilizar el tipo de datos requerido.

Tabla 2. Posibles valores de registro especiales para columnas de expresión generadas no determinísticas
Registro especial Tipo de datos para la columna
CURRENT CLIENT_ACCTNG VARCHAR(255)
CURRENT CLIENT_APPLNAME VARCHAR(255)
CURRENT CLIENT_CORR_TOKEN VARCHAR(255)
CURRENT CLIENT_USERID VARCHAR(255)
CURRENT CLIENT_WRKSTNNAME VARCHAR(255)
CURRENT SERVER CHAR(16)
CURRENT SQLID VARCHAR(n) donde n ≥ 8
SESSION_USER o USER VARCHAR(128)

La columna no puede tener una cláusula DEFAULT y no debe definirse como NOT NULL.

Inicio del cambioLa columna es una columna de expresión generada no determinista.fin del cambio

No especifique ninguna de las siguientes cláusulas para la columna:

  • CCSID 1200
  • CCSID 1208
  • FIELDPROC

Para más información, consulte Registros especiales.

variable de sesión
Especifica el valor de una variable de sesión incorporada. Debe especificarse el nombre completo de la variable de sesión. El valor de la variable de sesión se obtiene de la función GETVARIABLE en el momento de la operación de cambio de datos que asigna el valor a la columna. Si se cambian varias filas con una sola instrucción SQL, el valor de la columna es el mismo para todas las filas.

la variable de sesión debe ser una de las siguientes variables de sesión, y la columna debe utilizar el tipo de datos requerido.

Tabla 3. Posibles valores de variables de sesión para columnas de expresión generadas no determinísticas
Variable de sesión Tipo de datos para la columna
SYSIBM.PACKAGE_NAME VARCHAR(128)
SYSIBM.PACKAGE_SCHEMA VARCHAR(128)
SYSIBM.PACKAGE_VERSION VARCHAR(122)

La columna no puede tener una cláusula DEFAULT y no debe definirse como NOT NULL.

Inicio del cambioLa columna es una columna de expresión generada no determinista.fin del cambio

No especifique ninguna de las siguientes cláusulas para la columna:

  • CCSID 1200
  • CCSID 1208
  • FIELDPROC

Para obtener más información, consulte Variables de sesión integradas.

AS IDENTITY
Especifica que la columna es una columna de identidad para la tabla. Una tabla solo puede tener una columna de identidad. AS IDENTITY solo se puede especificar si el tipo de datos de la columna es un tipo numérico exacto con una escala de cero (SMALLINT, INTEGER, BIGINT, DECIMAL con una escala de cero, o un tipo distinto basado en uno de estos tipos).

Las columnas de identidad están definidas implícitamente como no nulas (NOT NULL). Una columna de identidad no puede tener una cláusula WITH DEFAULT.

Definir una columna como IDENTIDAD no garantiza necesariamente la unicidad de los valores. Para garantizar la unicidad de los valores, defina un índice único de una sola columna en la columna de identidad.

Si se especifica EN ACELERADOR, no debe especificarse COMO IDENTIDAD.

START WITH constante-numérica
Especifica el primer valor que se genera para la columna de identidad. El valor puede ser cualquier valor positivo o negativo que pueda asignarse a la columna sin que existan dígitos distintos de cero a la derecha del punto decimal.

Si no se especifica explícitamente un valor al definir la columna de identidad, el valor predeterminado es MINVALUE para una columna de identidad ascendente y MAXVALUE para una columna de identidad descendente. Este valor no es necesariamente el valor al que se aplicará el ciclo después de alcanzarse el valor mínimo o máximo de la columna de identidad. El rango utilizado para los ciclos se define mediante MINVALUE y MAXVALUE. MAXVALUE y MINVALUE no limitan el valor de la constante numérica. Es decir, la cláusula START WITH puede utilizarse para iniciar la generación de valores fuera del rango que se utiliza para los ciclos. Sin embargo, el siguiente valor generado después del valor START WITH especificado es MINVALUE para una columna de identidad ascendente o MAXVALUE para una columna de identidad descendente.

INCREMENT BY constante-numérica
Especifica el intervalo existente entre valores consecutivos de la columna de identidad. El valor puede ser cualquier valor positivo o negativo (incluido 0 ) que no exceda el valor de una constante de número entero grande, y podría asignarse a la columna sin que existan dígitos distintos de cero a la derecha del punto decimal.

Si este valor es negativo, los valores de la columna de identidad descienden. Si este valor es 0 o positivo, los valores de la columna de identidad ascienden. El valor predeterminado es 1.

MINVALUE o NO MINVALUE
Especifica el valor mínimo en el que una columna de identidad descendente o bien realiza un ciclo o deja de generar valores, o bien una columna de identidad ascendente realiza un ciclo hasta alcanzar el valor máximo.
NO MINVALUE
Especifica que no se ha establecido el punto final mínimo del rango de valores para la columna de identidad. En tal caso, el valor predeterminado para MINVALUE se convierte en uno de los siguientes:
  • Para una columna de identidad ascendente, el valor es el valor START WITH o 1 si START WITH no está especificado.
  • Para una columna de identidad descendente, el valor es el valor mínimo del tipo de datos de la columna.

El valor predeterminado es NO MINVALUE.

MINVALUE constante-numérica
Especifica la constante numérica que es el valor mínimo que se genera para esta columna de identidad. Este valor puede ser cualquier valor positivo o negativo que pueda asignarse a esta columna sin que existan dígitos distintos de cero a la derecha del punto decimal. El valor debe ser menor o igual que el valor máximo.
MAXVALUE o NO MAXVALUE
Especifica el valor máximo al que una columna de identidad ascendente o bien realiza un ciclo o deja de generar valores, o bien realiza un ciclo descendente hasta alcanzar el valor mínimo.
NO MAXVALUE
Especifica que no se ha establecido el punto final mínimo del rango de valores para la columna de identidad. En tal caso, el valor predeterminado de MAXVALUE pasa a ser uno de los siguientes:
  • Para una columna de identidad ascendente, el valor es el valor máximo del tipo de datos asociado con la columna.
  • Para una columna de identidad descendente, el valor es el valor START WITH (empezar con) -1, si no se especifica START WITH.

El valor predeterminado es NO MAXVALUE.

MAXVALUE constante-numérica
Especifica la constante numérica que es el valor máximo que se genera para esta columna de identidad. Este valor puede ser cualquier valor positivo o negativo que pueda asignarse a esta columna sin que existan dígitos distintos de cero a la derecha del punto decimal. El valor debe ser mayor o igual que el valor mínimo.
CYCLE o NO CYCLE
Especifica si esta columna de identidad debe seguir generando valores después de alcanzar su valor máximo o mínimo. El valor predeterminado es SIN CICLO.
NO CYCLE
Especifica que no se generarán valores para la columna de identidad después de que se haya alcanzado el valor máximo o mínimo.
CYCLE
Especifica que se sigan generando valores para la columna de identidad después de que se haya alcanzado el valor máximo o mínimo. Si se utiliza esta opción, después de que una columna de identidad ascendente alcance el valor máximo, genera su valor mínimo. Después de que una columna de identidad descendente alcanza su valor mínimo, genera su valor máximo. Los valores máximo y mínimo para la columna de identidad determinan el rango que se utiliza para el ciclo.

Cuando CYCLE está en vigor, se pueden generar valores duplicados por Db2 para una columna de identidad. Sin embargo, si existe un índice único en la columna de identidad y se genera un valor no único para él, se produce un error.

CACHE constante entera o NO CACHE
Especifica si se deben mantener en la memoria algunos valores preasignados. La preasignación y el almacenamiento de valores en la memoria caché mejoran el rendimiento de la inserción de filas en una tabla. El valor predeterminado es CACHE 20.

Inicio del cambioEn un entorno en el que no se comparten datos, si el sistema se apaga (normalmente o por un fallo del sistema), todos los valores de secuencia almacenados en caché que no se hayan utilizado en sentencias confirmadas se pierden (es decir, nunca se utilizarán). El valor especificado para la opción CACHE es el número máximo de valores de secuencia que podrían perderse al apagar el sistema.fin del cambio

Inicio del cambioEn un entorno de compartición de datos, puede utilizar las opciones CACHE y NO ORDER para permitir que varios miembros de Db2 almacenen simultáneamente en caché valores de secuencia.fin del cambio

SIN CACHÉ
Especifica que los valores de la columna de identidad y las secuencias no están preasignados ni almacenados en la memoria caché, lo que garantiza que los valores no se perderán en caso de fallo del sistema. En este caso, cada solicitud de un nuevo valor para la columna de identidad o secuencia da como resultado una E/S sincrónica.

En un entorno de intercambio de datos, utilice NO CACHE si necesita garantizar que la columna de identidad y los valores de secuencia se generan en el orden en que se solicitan.

CACHE constante entera
Especifica el número máximo de valores de la secuencia de la columna de identidad que Db2 puede preasignar y mantener en memoria.

Durante un cierre de e Db2 , todos los valores de columna de identidad almacenados en caché y los valores de secuencia que aún no se han asignado se perderán y no se utilizarán. Por lo tanto, el valor que se especifica para CACHE también representa el número máximo de valores de columna de identidad y valores de secuencia que se perderán durante un apagado de Db2 .

El valor mínimo es 2.

En un entorno de intercambio de datos, puede utilizar el CACHE y NO ORDER para permitir que varios miembros de Db2 almacenen en caché valores de secuencia simultáneamente.

ORDER o NO ORDER
Especifica si los valores de la columna de identidad deben generarse según el orden de petición. El valor predeterminado es SIN PEDIDO.

Inicio del cambioEn un entorno en el que no se comparten datos, no hay garantía de que los valores se asignen en orden en todo el servidor a menos que también se especifique NO CACHE. La ORDEN sólo se aplica a un proceso de solicitud única.fin del cambio

Inicio del cambioEn un entorno de compartición de datos, si se especifica ORDER, se establece implícitamente NO CACHE, incluso si se especifica CACHE integer-constant.fin del cambio

NO ORDER
Especifica que los valores no deben generarse en el orden en el que se solicitan.
ORDER
Especifica que los valores se generan en orden de solicitud. Especificar ORDER podría deshabilitar el almacenamiento en caché de valores. El PEDIDO solo se aplica a un proceso de solicitud única.

En un entorno de intercambio de datos, si las opciones CACHE y NO ORDER están activas, pueden estar activos varios cachés simultáneamente, y las solicitudes de valores de identidad de diferentes miembros de Db2 podrían no dar lugar a la asignación de valores en estricto orden numérico. Por ejemplo, si los miembros DB2A y DB2B utilizan la columna de identidad, y DB2A obtiene los valores de caché del 1 al 20 y DB2B obtiene los valores de caché del 21 al 40, el orden real de los valores asignados sería 1,21,2 si DB2A solicitara un valor primero, luego DB2B lo solicitara y luego DB2A lo solicitara de nuevo. Por lo tanto, para garantizar que los valores de identidad se generen en estricto orden numérico entre varios miembros de la base de datos de identidad ( Db2 ) que utilizan la misma columna de identidad, especifique la opción ORDER.

FIELDPROC nombre del programa
Designa el nombre del programa como la rutina de salida del procedimiento de campo para la columna. Un procedimiento de campo solo puede especificarse para una columna con un atributo de longitud que no sea superior a 255 bytes. FIELDPROC solo se puede especificar para columnas que sean tipos de datos de cadena de caracteres o cadena gráfica integrados. La columna no debe ser una de las siguientes:
  • una columna LOB
  • Una columna de etiqueta de seguridad
  • Una columna de indicación de fecha y hora de cambio de fila
  • una columna con el tipo de datos TIMESTAMP WITH TIME ZONE
  • una columna Unicode en una tabla EBCDIC
  • una columna en una tabla de solo acelerador

El procedimiento de campo codifica y descodifica los valores de las columnas: antes de insertar un valor en la columna, se pasa al procedimiento de campo para su codificación. Antes de que un programa utilice un valor de la columna, se pasa al procedimiento de campo para su decodificación. Se podría utilizar un procedimiento de campo, por ejemplo, para modificar la secuencia de clasificación de los valores introducidos en la columna.

El procedimiento de campo también se invoca durante el procesamiento de la instrucción CREATE TABLE. Cuando se invoca, el procedimiento proporciona a Db2 la descripción del campo de la columna. La descripción del campo define las características de los datos de los valores codificados. Por el contrario, la información que usted suministra para la columna en la instrucción CREATE TABLE define las características de los datos de los valores descodificados.

Para obtener más información, consulte:

constante
Es un parámetro que se pasa al procedimiento de campo cuando se invoca. La lista de parámetros es opcional. El enésimo parámetro especificado en la cláusula FIELDPROC en CREATE TABLE corresponde al enésimo parámetro del procedimiento de campo especificado. La longitud máxima de la lista de parámetros es 254 bytes, incluyendo las comas, pero excluyendo los blancos no significativos y el paréntesis de delimitación.

Si omite FIELDPROC, la columna no tendrá ningún procedimiento de campo.

Como etiqueta de seguridad
Especifica que la columna contendrá valores de etiquetas de seguridad. Esto también indica que la tabla está definida con seguridad multinivel con granularidad a nivel de fila. Una tabla solo puede tener una columna de etiquetas de seguridad. No se puede definir una columna de etiqueta de seguridad para una tabla de solo acelerador. Para definir una tabla con una columna de etiqueta de seguridad, el ID de autorización principal del extracto debe tener una etiqueta de seguridad válida y la clase SECLABEL de RACF s debe estar activa. Además, también se requieren las siguientes condiciones:
  • El tipo de datos de la columna debe ser CHAR(8).
  • El subtipo de la columna debe ser SBCS.
  • La columna debe definirse con las cláusulas NOT NULL y WITH DEFAULT.
  • La columna debe ser una columna EBCDIC.
  • La cláusula WITH DEFAULT no debe especificar un valor predeterminado (Db2 determina el valor predeterminado)
  • No se han definido procedimientos de campo, restricciones de verificación ni restricciones referenciales en la columna.
  • No se puede definir ningún procedimiento de edición para la tabla con sensibilidad de atributo de fila.

Para obtener información sobre el uso de la seguridad multinivel, consulte Seguridad multinivel.

IMPLICITLY HIDDEN
Especifica que la columna no es visible en el resultado de las sentencias SQL a menos que se haga referencia explícita a la columna por su nombre. Por ejemplo, suponiendo que la e T1 a de la tabla incluye una columna que está definida con la cláusula IMPLICITLY HIDDEN, el resultado de un SELECT * no incluiría la columna implícitamente oculta. Sin embargo, el resultado de una instrucción SELECT que haga referencia explícita al nombre de la columna implícitamente oculta incluiría dicha columna en la tabla de resultados.

IMPLICITLY HIDDEN no debe especificarse para una columna que se defina como ROWID, o un tipo distinto que se base en un ROWID. IMPLICITAMENTE OCULTO no debe especificarse para todas las columnas de una tabla. Si se especifica IN ACCELERATOR, no se debe especificar IMPLICITLY HIDDEN.

INLINE LENGTH entero
Inicio del cambioEspecifica la longitud máxima de la parte en línea de un valor de columna LOB. La parte en línea es la parte que se almacena en el espacio de la tabla base. No se puede especificar INLINE LENGTH si la columna no es una columna LOB (o un tipo distinto basado en una LOB), si la tabla no está en un espacio de tabla universal o si la tabla es solo de aceleración.

Para las columnas BLOB y CLOB, el entero especifica el número máximo de bytes que se almacenan en el espacio de la tabla base para la columna. el número entero debe estar en el rango de 0 a 32680 (inclusive) para una columna BLOB o CLOB.

Para una columna DBCLOB, el entero especifica el número máximo de caracteres de doble byte que se almacenan en el espacio de tabla para la columna. el número entero debe estar en el rango de 0 a 16340 (inclusive) para una columna DBCLOB.

Si se especifica LONGITUD EN LÍNEA, el valor del entero no puede ser mayor que la longitud máxima de la columna LOB.

Si no se especifica la cláusula LONGITUD EN LÍNEA, la longitud máxima de la columna LOB depende de las siguientes condiciones:

  • Si no se utiliza un tipo distinto o el tipo distinto que se utiliza se ha creado sin el atributo LONGITUD EN LÍNEA, la columna LOB utilizará el valor del parámetro LONGITUD EN LÍNEA LOB en el panel de instalación DSNTIPD como longitud en línea predeterminada cuando el valor de LONGITUD EN LÍNEA LOB no exceda la longitud máxima de la columna LOB. Si el valor de LONGITUD EN LÍNEA DE LOB supera la longitud máxima de la columna LOB, la longitud máxima es la longitud en línea de esta columna LOB.
  • Si se utiliza un tipo distinto que se ha creado con el atributo LONGITUD EN LÍNEA, la columna LOB hereda la longitud en línea del tipo distinto.

Independientemente de cómo se determine la longitud, la longitud en línea del LOB no puede ser mayor que su longitud máxima.

fin del cambio

definición-período

Start of changePERIOD FOREnd of change
FL 500 Define un período para la tabla. el nombre de la columna inicial no debe ser el mismo que el de la columna final. El tipo de datos, la longitud, la precisión y la escala para el nombre de la columna inicial deben ser los mismos que para el nombre de la columna final.

Si se especifica IN ACCELERATOR, no debe especificarse PERIOD.

SYSTEM_TIME ( nombre-de-columna-de-inicio , nombre-de-columna-de-fin )
Define un período de sistema con el nombre SYSTEM_TIME. No debe haber una columna en la tabla con el nombre SYSTEM_TIME. Una tabla solo puede tener un periodo SYSTEM_TIME. begin-column-name debe definirse como AS ROW BEGIN y end-column-name debe definirse como AS ROW END.
BUSINESS_TIME ( nombre-de-columna-de-inicio , nombre-de-columna-de-fin )
Define un período de aplicación con el nombre BUSINESS_TIME. No debe haber una columna en la tabla con el nombre BUSINESS_TIME. Una tabla solo puede tener un periodo BUSINESS_TIME. begin-column-name y end-column-name deben definirse como DATE o TIMESTAMP(6) SIN ZONA HORARIA, y las columnas deben definirse como NOT NULL. begin-column-name y end-column-name no deben identificar una columna que esté definida con una cláusula GENERATED.

Inicio del cambioFL 500Se genera una restricción de comprobación implícita para garantizar la relación del valor de nombre-columna-fin con el valor de nombre-columna-principio de la siguiente manera:fin del cambio

Inicio del cambio
  • Para un período de tiempo de negocio inclusivo-exclusivo, el valor de end-column-name es mayor que el valor de begin-column-name.
  • Para un período de tiempo de negocio inclusivo-inclusivo, el valor de end-column-name es mayor o igual que el valor de begin-column-name.
fin del cambio

Inicio del cambioFL 500El nombre de la restricción de comprobación creada implícitamente es DB2_GENERATED_CHECK_CONSTRAINT_FOR_BUSINESS_TIME, y ese nombre no debe estar definido como el nombre de una restricción de comprobación existente. fin del cambio

nombre-principio-columna
Identifica la columna que registra el inicio del periodo de tiempo en el que una fila es válida. El nombre debe identificar una columna que exista en la tabla y no debe ser el mismo que una columna que se utilice en la definición de otro período para la tabla. el nombre de la columna inicial no debe ser el mismo que el de la columna final. El tipo de datos y la precisión para begin-column-name deben ser los mismos que para end-column-name.

Para un período SYSTEM_TIME, el nombre de la columna inicial debe definirse como AS ROW BEGIN.

Para un período BUSINESS_TIME, la columna no debe definirse con una cláusula GENERATED.

nombre-fin-columna
Identifica la columna que registra el final del periodo de tiempo en el que una fila es válida. En la tabla de historial asociada a una tabla temporal de sistema-período, la columna de la tabla de historial que corresponde al nombre de la columna final en la tabla temporal de sistema-período se establece para reflejar la eliminación de la fila. El nombre debe identificar una columna que exista en la tabla y no debe ser el mismo que una columna que se utilice en la definición de otro período para la tabla.

Durante un periodo SYSTEM_TIME, el nombre de la columna final debe definirse como AS ROW END.

Para un período BUSINESS_TIME, la columna no debe definirse con una cláusula GENERATED.

Inicio del cambioEXCLUSIVE fin del cambio
Inicio del cambioFL 500Especifica que el valor de la columna final no se incluye en el período. El período BUSINESS_TIME se define como inclusivo-exclusivo. fin del cambio
Inicio del cambioINCLUSIVE fin del cambio
Inicio del cambioFL 500Especifica que el valor de la columna final se incluya en el período. El período BUSINESS_TIME se define como inclusivo-inclusivo. fin del cambio

restricción-unicidad

CONSTRAINT nombre de la restricción
Indica el nombre de la restricción. Si no se especifica un nombre de restricción, se genera un nombre de restricción único. Si se especifica un nombre, debe ser diferente de los nombres de cualquier restricción referencial, de verificación, de clave principal o de clave única especificada previamente en la tabla.
PRIMARY KEY( nombre-columna,... )
Define una clave primaria formada por las columnas identificadas. La cláusula no debe especificarse más de una vez y la misma columna no debe identificarse más de una vez. Las columnas identificadas deben estar definidas como NOT NULL. Cada nombre de columna debe ser un nombre no cualificado que identifique una columna de la tabla, excepto para los siguientes tipos de columnas:
  • una columna LOB
  • Una columna ROWID
  • Inicio del cambiouna columna de tipo distinto basada en un tipo de datos LOB o ROWIDfin del cambio
  • Una columna XML
  • Una columna de indicación de fecha y hora de cambio de fila
  • una columna en una tabla de solo acelerador

Inicio del cambioFL 500Todas las columnas de caracteres y cadenas gráficas de la clave deben utilizar el mismo esquema de codificación.fin del cambio

Inicio del cambioEl número de columnas identificadas no debe ser superior a 64. Además, la suma de los atributos de longitud de las columnas no debe ser superior a 2000 - n - 2m - 3d, donde m es el número de columnas de longitud variable y d es el número de columnas DECFLOAT de la clave.fin del cambio

La tabla se marca como no disponible hasta que se cree explícitamente su índice primario, a menos que el espacio de la tabla se cree explícitamente y el procesador de esquemas procese la instrucción CREATE TABLE, o que el espacio de la tabla se cree implícitamente. En ese caso, Db2 crea implícitamente un índice para hacer cumplir la unicidad de la clave principal y la definición de la tabla se considera completa. (Para obtener más información sobre los índices creados implícitamente, consulte Índices creados implícitamente )

BUSINESS_TIME SIN SOLAPAMIENTOS puede especificarse como el último elemento de la lista. Si se especifica BUSINESS_TIME WITHOUT OVERLAPS, la lista debe incluir al menos un nombre de columna o una expresión clave. Cuando se especifica SIN SOLAPAMIENTOS, los valores para el resto de las claves especificadas son únicos con respecto al tiempo para el período BUSINESS_TIME. Cuando se especifica BUSINESS_TIME WITHOUT OVERLAPS, las columnas del periodo BUSINESS_TIME no deben especificarse como parte de la restricción. La especificación de BUSINESS_TIME WITHOUT OVERLAPS añade lo siguiente a la restricción:
  • La columna de fin del período de BUSINESS_TIME en orden ascendente
  • La columna de inicio del período de BUSINESS_TIME en orden ascendente
ÚNICO (nombre de la columna,...)
Define una clave exclusiva compuesta por las columnas identificadas. Cada nombre-columna debe ser un nombre no calificado que identifique una columna de la tabla. Cada columna identificada debe definirse como NOT NULL. La misma columna no debe identificarse más de una vez. No se pueden identificar los siguientes tipos de columnas:
  • una columna LOB
  • Una columna ROWID
  • Inicio del cambiouna columna de tipo distinto basada en un tipo de datos LOB o ROWIDfin del cambio
  • Una columna XML
  • Una columna de indicación de fecha y hora de cambio de fila
  • una columna en una tabla de solo acelerador

Inicio del cambioEl número de columnas identificadas no debe ser superior a 64. Además, la suma de los atributos de longitud de las columnas no debe ser superior a 2000 - n - 2m - 3d, donde m es el número de columnas de longitud variable y d es el número de columnas DECFLOAT de la clave.fin del cambio

Inicio del cambioTodas las columnas de caracteres y de serie gráfica de la clave deben utilizar el mismo esquema de codificación.fin del cambio

Una clave única es un duplicado si es la misma que la clave principal o una clave única definida previamente. La especificación de una clave única duplicada se ignora con una advertencia.

La tabla se marca como no disponible hasta que se creen explícitamente todos los índices necesarios, a menos que el espacio de la tabla se cree explícitamente y el procesador de esquemas procese la instrucción CREATE TABLE, o que el espacio de la tabla se cree implícitamente. En estos casos, Db2 crea implícitamente los índices necesarios para las claves únicas y la definición de la tabla se considera completa. (Para obtener más información sobre los índices creados implícitamente, consulte Índices creados implícitamente )

BUSINESS_TIME SIN SOLAPAMIENTOS puede especificarse como el último elemento de la lista. Si se especifica BUSINESS_TIME WITHOUT OVERLAPS, la lista debe incluir al menos un nombre de columna o una expresión clave. Cuando se especifica SIN SOLAPAMIENTOS, los valores para el resto de las claves especificadas son únicos con respecto al tiempo para el período BUSINESS_TIME. Cuando se especifica BUSINESS_TIME WITHOUT OVERLAPS, las columnas del periodo BUSINESS_TIME no deben especificarse como parte de la restricción. La especificación de BUSINESS_TIME WITHOUT OVERLAPS añade lo siguiente a la restricción:
  • La columna de fin del período de BUSINESS_TIME en orden ascendente
  • La columna de inicio del período de BUSINESS_TIME en orden ascendente

restricción-referencia

CONSTRAINT nombre de la restricción
Indica el nombre de la restricción de referencia. Si no se especifica un nombre de restricción, se genera un nombre de restricción único. Si se especifica un nombre, debe ser diferente de los nombres de cualquier restricción referencial, de verificación, de clave principal o de clave única especificada previamente en la tabla.
FOREIGN KEY (nombre de columna,...) cláusula-referencias
Cada especificación de la cláusula FOREIGN KEY define una restricción referencial. La tabla que se está creando es la tabla secundaria para la restricción referencial.
La clave externa de la restricción referencial se compone de las columnas identificadas y de las columnas del período BUSINESS_TIME si se especifica la cláusula PERIOD BUSINESS_TIME. Cada nombre-columna debe ser un nombre no calificado que identifique una columna de la tabla. La misma columna no debe identificarse más de una vez. Inicio del cambioSi se especifica PERIODO BUSINESS_TIME, las columnas del periodo BUSINESS_TIME no deben especificarse como parte de la restricción.fin del cambioLa columna no puede ser ninguno de los siguientes tipos de columnas:
  • una columna LOB
  • Una columna ROWID
  • una columna DECFLOAT
  • Una columna XML
  • Una columna de indicación de fecha y hora de cambio de fila
  • Una columna de etiqueta de seguridad
  • una columna en una tabla de solo acelerador

El número de columnas identificadas y las columnas del período BUSINESS_TIME, si se especifica la cláusula PERIOD BUSINESS_TIME, no deben exceder de 64, incluidas las columnas del período BUSINESS_TIME si se especifica PERIOD BUSINESS_TIME. La suma de los atributos de longitud de columna no debe exceder 255 menos el número de columnas que permiten valores nulos. La restricción referencial es un duplicado si la CLAVE EXTERNA y la tabla principal son las mismas que la CLAVE EXTERNA y la tabla principal de una restricción referencial definida anteriormente. La especificación de una restricción referencial duplicada se ignora con una advertencia. Una excepción es que no se permite una restricción referencial duplicada si la definición de la restricción incluye la cláusula PERIOD BUSINESS_TIME.

REFERENCIAS nombre-tabla-padre (nombre-columna,...)
El nombre de la tabla que se especifica después de REFERENCIAS es la tabla principal para la restricción referencial. parent-table-name debe identificar una tabla que exista en el servidor actual1. El nombre de la tabla no debe identificar a una de las siguientes tablas:
  • Una tabla de catálogo
  • Inicio del cambioUna tabla de directoriosfin del cambio
  • una tabla temporal global declarada
  • Una tabla de historial
  • Una tabla de archivo
En la siguiente discusión, sea T2 una tabla identificada y sea T1 la tabla que está creando ( T1 y T2 no pueden ser la misma tabla 1 ).

T2 debe tener un índice único. El conjunto de privilegios debe incluir el privilegio ALTER o REFERENCES en la tabla principal, o el privilegio REFERENCES en las columnas de la clave principal designada, incluidas las columnas del período BUSINESS_TIME si se especifica la cláusula PERIOD BUSINESS_TIME.

La clave principal de la restricción referencial se compone de las columnas identificadas, o de las columnas del período BUSINESS_TIME si se especifica PERIOD BUSINESS_TIME. Cada nombre-columna debe ser un nombre no calificado que identifique una columna de T2. La misma columna no debe identificarse más de una vez. Si se especifica PERIOD BUSINESS_TIME, las columnas del periodo BUSINESS_TIME no deben especificarse como parte de la restricción. La columna identificada no puede ser ninguno de los siguientes tipos de columnas:
  • una columna LOB
  • Una columna ROWID
  • una columna DECFLOAT
  • Una columna XML
  • Una columna de indicación de fecha y hora de cambio de fila
  • Una columna de etiqueta de seguridad

Inicio del cambioLa lista de nombres de columna de la clave padre debe coincidir con la lista de nombres de columna de una clave primaria o clave única de la tabla padre T2. Los nombres de las columnas deben especificarse en el mismo orden que en la clave principal o clave única. Si se especificó PERIOD BUSINESS_TIME para la clave principal o la clave única de la tabla principal T2, entonces también se debe especificar PERIOD BUSINESS_TIME para la cláusula de clave foránea de T1. Si alguna de las columnas referenciadas en T2 tiene un tipo de datos no numérico, T2 y T1 deben utilizar el mismo esquema de codificación, a menos que T2 sea una tabla Unicode y T1 sea una tabla EBCDIC con columnas clave Unicode. En ese caso, para cada columna de cadena de caracteres o gráficos de T1, el CCSID debe ser el mismo que el de la columna correspondiente de T2.fin del cambio

Si no se especifica una lista de nombres de columnas, T2 debe tener una clave principal. La omisión de una lista de nombres de columnas es una especificación implícita de las columnas de la clave principal para T2.

La clave foránea especificada debe tener el mismo número de columnas que la clave principal de T2 y, excepto por sus nombres, valores predeterminados, atributos nulos y restricciones de verificación, la descripción de la enésima columna de la clave foránea debe ser idéntica a la descripción de la enésima columna de la clave principal designada. Si la clave externa incluye una columna definida como un tipo distinto, la columna correspondiente de la clave principal designada debe ser del mismo tipo distinto. Si una columna de la clave externa tiene un procedimiento de campo, la columna correspondiente de la clave principal designada debe tener el mismo procedimiento de campo y una descripción de campo idéntica. Una descripción de campo es una descripción del valor codificado tal y como se almacena en la base de datos para una columna que se ha definido para tener un procedimiento de campo asociado.

Si PERIOD BUSINESS_TIME se especifica en la cláusula FOREIGN KEY, entonces PERIOD BUSINESS_TIME también debe especificarse en la cláusula REFERENCES. Si PERIOD BUSINESS_TIME no se especifica en la cláusula FOREIGN KEY, entonces PERIOD BUSINESS_TIME tampoco debe especificarse en la cláusula REFERENCES.

Si se especifica la cláusula PERIOD BUSINESS_TIME, no se debe definir T2 como parte de un ciclo referencial. T1 y T2 no deben ser la misma tabla, y T1 no debe ser descendiente, directa o indirectamente, de otra tabla que sea descendiente de T2.

Db2 debe tener disponible el espacio de la mesa que contiene T1. Si se rellena T1, su espacio de tabla se coloca en estado de verificación pendiente. Una tabla en un espacio de tabla segmentado se rellena si la tabla no está vacía. Una tabla en un espacio de tabla que no está segmentado se considera poblada si el espacio de tabla ha contenido alguna vez algún registro.

La restricción de referencia especificada por una cláusula FOREIGN KEY define una relación en la que T2 es el padre y T1 es dependiente. En el catálogo se registra una descripción de la restricción referencial.

Inicio del cambioPERIOD BUSINESS_TIMEfin del cambio
Inicio del cambioEspecifica que el período BUSINESS_TIME se considera parte de la restricción referencial. Cuando se especifica PERIOD BUSINESS_TIME, los valores del resto de las columnas especificadas son únicos con respecto al punto de tiempo especificado.

PERIODO BUSINESS_TIME puede especificarse como la última expresión clave. Si PERIOD BUSINESS_TIME no es la última expresión clave, se devuelve un error. Si se especifica PERIOD BUSINESS_TIME, las columnas del periodo BUSINESS_TIME no deben especificarse como parte de la restricción.

Cuando se especifica PERIOD BUSINESS_TIME, las siguientes columnas se añaden implícitamente al final de la restricción:
  • La columna final del periodo BUSINESS_TIME.
  • La columna de inicio del periodo BUSINESS_TIME.

La cláusula PERIOD BUSINESS_TIME especifica que no debe haber una fila en la tabla secundaria para la cual el período de tiempo representado por los valores del período BUSINESS_TIME para esa fila no esté contenido en el período BUSINESS_TIME de una fila correspondiente en la tabla principal. Además, no es necesario que haya exactamente una fila correspondiente en la tabla principal donde el período BUSINESS_TIME contenga el período BUSINESS_TIME de la fila secundaria. Siempre que el período BUSINESS_TIME de una fila de la tabla secundaria esté contenido en la unión de los períodos BUSINESS_TIME de dos o más filas coincidentes contiguas de la tabla principal, se considera que la restricción referencial se ha cumplido.

Cuando la cláusula FOREIGN KEY especifica la cláusula PERIOD BUSINESS_TIME, se aplican las siguientes condiciones:
  • La cláusula REFERENCES correspondiente también debe especificar la cláusula PERIOD BUSINESS_TIME.
  • Se debe definir en la tabla un índice único con la cláusula BUSINESS_TIME WITHOUT OVERLAPS. La tabla se marca como no disponible hasta que se crea el índice.
  • Se debe definir un índice único en la tabla principal con la cláusula BUSINESS_TIME WITHOUT OVERLAPS.

ON DELETE RESTRICT debe especificarse, implícita o explícitamente, cuando también se especifique PERIOD BUSINESS_TIME.

fin del cambio
ON DELETE
La regla de eliminación de la relación viene determinada por la cláusula ON DELETE. Para más información sobre los conceptos utilizados aquí, consulte Restricciones referenciales.

No debe especificarse SET NULL a menos que alguna columna de las claves foráneas permita valores nulos. El valor predeterminado de la regla depende del valor del registro especial CURRENT RULES cuando se procesa la instrucción CREATE TABLE. Si el valor del registro es «Db2 », la regla de eliminación por defecto es RESTRICT; si el valor es «STD», la regla de eliminación por defecto es NO ACTION.

La norma de supresión se aplica cuando una fila de la T2 es el objeto de una operación de DELETE o de supresión propagada y esa fila tiene dependientes en la T1. Supongamos que p indica dicha fila de T2. Entonces:

  • Si se especifica RESTRICT o NO ACTION, se produce un error y no se suprimir ninguna fila.
  • Si se especifica CASCADE, la operación de supresión se propaga a los dependientes de p en T1.
  • Si se especifica SET NULL, cada columna con posibilidad de nulos de la clave foránea de cada dependiente de p en T1 se establece en nulo.

T3 : tabla identificada en otra cláusula FOREIGN KEY (si la hay) de la sentencia CREATE TABLE. Las reglas de eliminación de las relaciones que involucran a T2 y T3 deben ser las mismas y no deben ser SET NULL si:

  • T2 y T3 son la misma tabla.
  • T2 es descendiente de T3 y la eliminación de filas de T3 se extiende a T2.
  • T2 y T3 son descendientes de la misma tabla y la eliminación de filas de esa tabla afecta en cascada tanto a T2 como a T3.
ENFORCED o NOT ENFORCED
Indica si Db2 aplica o no la restricción referencial durante las operaciones normales, como insertar, actualizar o eliminar.
ENFORCED
Especifica que la restricción referencial es aplicada por el controlador de acceso a datos ( Db2 ) durante las operaciones normales (como insertar, actualizar o eliminar) y que se garantiza que es correcta. Este es el valor predeterminado.
NOT ENFORCED
Especifica que la restricción referencial no es aplicada por Db2 durante las operaciones normales, como insertar, actualizar o eliminar. Esta opción solo debe utilizarse cuando se haya verificado que los datos almacenados en la tabla se ajustan a la restricción mediante algún otro método que no sea el gestor de la base de datos.
ENABLE QUERY OPTIMIZATION
Especifica que la restricción se puede utilizar para la optimización de consultas. Db2 utiliza la información en la optimización de consultas utilizando tablas de consulta materializadas con la suposición de que la restricción es correcta. Este es el valor predeterminado.

restricción-comprobación

CONSTRAINT nombre de la restricción
Indica el nombre de la restricción de comprobación. El nombre de la restricción debe ser diferente de los nombres de cualquier restricción referencial, de verificación, de clave principal o de clave única especificada previamente en la tabla.

Si no se especifica el nombre de la restricción, se deriva un nombre de restricción único del nombre de la primera columna en la condición de verificación especificada en la definición de la restricción de verificación.

CHECK (condición-comprobación)
Define una restricción de comprobación. En cualquier momento, la condición de verificación debe ser verdadera o desconocida para cada fila de la tabla. Una condición de verificación puede evaluarse como desconocida si una columna que es un operando del predicado es nula. Una condición de comprobación que se evalúa como desconocida no viola la restricción de comprobación. Una condición de búsqueda es una condición de búsqueda, con las siguientes restricciones:
  • Solo puede referirse a columnas de la tabla nombre_tabla.
  • Las columnas no pueden ser de los siguientes tipos:
    • columnas LOB
    • Columnas ROWID
    • DECFLOAT columnas
    • columnas de tipo distinto que se basan en tipos de datos LOB, ROWID y DECFLOAT
    • Columnas XML
    • Columnas de etiqueta de seguridad
    • columnas en una tabla de solo acelerador
  • Puede tener hasta 3800 bytes de longitud, sin incluir los espacios en blanco redundantes.
  • No debe contener ninguno de los siguientes elementos:
    • subselecciones
    • Funciones integradas o definidas por el usuario
    • Especificaciones de CAST
    • Funciones de reparto distintas de las creadas cuando se creó el tipo distinto
    • Variables de host
    • Marcadores de parámetro
    • Registros especiales
    • Variables globales
    • Columnas que incluyen un procedimiento de campo
    • Expresiones CASE
    • Expresiones de CAMBIO DE FILA
    • Inicio del cambioExpresiones de valor de filafin del cambio
    • Predicados DISTINCT
    • Constantes GX (constantes de cadena gráfica hexadecimal)
    • Referencias de secuencia
    • Especificaciones OLAP
  • Inicio del cambioNo debe dar lugar a la conversión CCSID.fin del cambio
  • Si una condición de verificación se refiere a una columna LOB (incluido un tipo distinto basado en un LOB), la referencia debe aparecer dentro de un predicado LIKE.
  • Los operadores lógicos AND y OR pueden utilizarse entre predicados. Inicio del cambioEl operador lógico NOT no puede utilizarse con los siguientes predicados: NOT BETWEEN, NOT IN, NOT LIKE o IS NOT NULL.fin del cambio
  • El primer operando de cada predicado debe ser el nombre de una columna de la tabla.
  • El segundo operando en la condición de comprobación debe ser una constante o el nombre de una columna de la tabla.
    • Si el segundo operando de un predicado es una constante, y si la constante es:
      • Un número de punto flotante, entonces el tipo de datos de la columna debe ser de punto flotante.
      • Un número decimal, entonces el tipo de datos de la columna debe ser de punto flotante o decimal.
      • Un número entero, entonces el tipo de datos de la columna no debe ser un entero pequeño.
      • Un número entero pequeño, entonces el tipo de datos de la columna debe ser entero pequeño.
      • Una constante decimal, entonces su precisión no debe ser mayor que la precisión de la columna.
    • Si el segundo operando de un predicado es una columna, entonces ambas columnas del predicado deben tener:
      • El mismo tipo de datos.
      • Descripciones idénticas con la excepción de que la especificación de las cláusulas NOT NULL y DEFAULT para las columnas puede ser diferente, y que las columnas de cadena con el mismo tipo de datos pueden tener atributos de longitud diferentes.

LIKE

nombre-tabla o nombre-vista
Especifica que las columnas de la tabla tienen exactamente el mismo nombre y descripción que las columnas de la tabla o vista identificada.

El nombre que se especifica después de LIKE debe identificar una tabla o vista que exista en el servidor actual o una tabla temporal declarada. Una vista no puede contener columnas de longitud 0.

LIKE no debe hacer referencia a una tabla solo de acelerador ni utilizarse con la cláusula IN ACCELERATOR.

El conjunto de privilegios debe incluir implícita o explícitamente el privilegio SELECT en la tabla o vista identificada. Si la tabla o vista identificada contiene una columna con un tipo distinto, también se necesita el privilegio USAGE en el tipo distinto. Una tabla identificada no debe ser una tabla auxiliar ni una tabla clon. Una vista identificada no debe incluir una columna que sea una columna ROWID definida explícitamente (incluido un tipo distinto que se base en un ROWID), una columna de identidad o una columna de marca de tiempo de cambio de fila.

El uso de LIKE es una definición implícita de n columnas, donde n es el número de columnas en la tabla (incluidas las columnas ocultas implícitamente) o vista identificada. Una columna de la tabla nueva que se corresponde a una columna implícitamente oculta de la tabla existente también se definirá como implícitamente oculta. La definición implícita incluye todos los atributos de las n columnas tal y como se describen en SYSCOLUMNS con las siguientes excepciones:

  • Cuando se identifica una tabla en la cláusula LIKE y una columna de la tabla tiene un procedimiento de campo, la columna correspondiente de la nueva tabla tiene el mismo procedimiento de campo y la misma descripción de campo. Sin embargo, el procedimiento de campo no se invoca durante la ejecución de la instrucción CREATE TABLE. Cuando se identifica una vista en la cláusula LIKE, ninguna de las columnas de la nueva tabla tendrá un procedimiento de campo. Esto es así incluso en el caso de que una columna de una tabla base subyacente a la vista tenga definido un procedimiento de campo.
  • Cuando se identifica una tabla en la cláusula LIKE y una columna de la tabla es una columna de identidad, la columna correspondiente de la nueva tabla hereda solo el tipo de datos de la columna de identidad; no se hereda ninguno de los atributos de identidad de la columna a menos que se especifique la cláusula INCLUDING IDENTITY.
  • Cuando se identifica una tabla en la cláusula LIKE y una columna de la tabla es una columna de etiqueta de seguridad, la columna correspondiente de la nueva tabla hereda solo el tipo de datos de la columna de etiqueta de seguridad; no se hereda ninguno de los atributos de etiqueta de seguridad de la columna.
  • Cuando se identifica una tabla que contiene una columna ROWID en la cláusula LIKE, la columna correspondiente de la nueva tabla hereda la columna ROWID, independientemente de si la columna tiene el atributo IMPLICITLY HIDDEN.
  • Cuando se identifica una tabla en la cláusula LIKE y la tabla contiene una columna de marca de tiempo de cambio de fila, una columna de ID de inicio de transacción, una columna de inicio de fila o una columna de fin de fila, la columna correspondiente de la nueva tabla hereda solo el tipo de datos de la columna original. La nueva columna no se considera una columna generada.
  • Cuando se identifica una tabla en la cláusula LIKE y una columna de la tabla es una columna de expresión generada, la columna correspondiente de la nueva tabla hereda solo el tipo de datos de la columna original. La nueva columna no se considera una columna generada.
  • Cuando se identifica una tabla en la cláusula LIKE y la tabla contiene una columna LOB en línea, las columnas correspondientes de la nueva tabla heredarán el atributo en línea si la tabla está en un espacio de tabla universal. De lo contrario, se ignora el atributo inline de la tabla identificada en la cláusula LIKE.
  • Cuando se identifica una vista en la cláusula LIKE, el valor predeterminado que se asocia con la columna correspondiente de la nueva tabla depende de la columna de la tabla base subyacente para la vista. Si la columna de la tabla base no tiene un valor predeterminado, la nueva columna tampoco lo tiene. Si la columna de la tabla base tiene un valor predeterminado, el valor predeterminado de la nueva columna es:
    • Nulo si la columna de la tabla base subyacente permite valores nulos.
    • El valor predeterminado para el tipo de datos de la tabla base subyacente si la tabla base subyacente no permite valores nulos.
    Los valores predeterminados anteriores se eligen independientemente del valor predeterminado actual de la columna de la tabla base. La existencia de un disparador INSTEAD OF no afecta a la herencia de los valores predeterminados.
  • Cuando se identifica una tabla que utiliza particiones controladas por tabla en la cláusula LIKE, la nueva tabla no hereda el esquema de partición de esa tabla. Puede agregar estos límites de partición especificando ALTER TABLE con la cláusula ADD PARTITION BY RANGE.
  • El CCSID de la columna viene determinado por la cláusula CCSID implícita o explícita. Para más información, consulte la cláusula CCSID.

    Una excepción es una columna Unicode en una tabla EBCDIC, que hereda el CCSID de la columna en la tabla existente.

  • Inicio del cambioCuando se identifica una tabla en la cláusula LIKE y la tabla incluye una definición de periodo, la nueva tabla no hereda el periodo. definición.fin del cambio
  • Cuando la tabla identificada en la cláusula LIKE es una tabla temporal del período del sistema, la nueva tabla no es una tabla temporal del período del sistema.
  • Cuando la tabla identificada en la cláusula LIKE tiene controles de acceso de fila o controles de acceso de columna activados, la nueva tabla no hereda los controles de acceso de fila o los controles de acceso de columna.

La definición implícita no incluye ningún otro atributo de la tabla o vista identificada. Por ejemplo, la nueva tabla no tiene clave principal ni clave foránea. La tabla se crea en el espacio de tablas implícita o explícitamente especificado mediante la cláusula IN y la tabla tiene cualquier otra cláusula opcional sólo si la cláusula opcional se especifica.

opciones-copia

opciones-copia
Especifica si los atributos de columna de identidad, los atributos de marca de tiempo de cambio de fila y los valores predeterminados de columna se heredan de la definición del origen de la tabla de resultados.
EXCLUIR ATRIBUTOS DE LA COLUMNA DE IDENTIDAD o INCLUIR ATRIBUTOS DE LA COLUMNA DE IDENTIDAD
Especifica si los atributos de la columna de identidad se heredan de la definición del origen de la tabla de resultados.
EXCLUDING IDENTITY COLUMN ATTRIBUTES
Especifica que los atributos de la columna de identidad no se heredan de la definición del origen de la tabla de resultados. Este es el valor predeterminado.
INCLUDING IDENTITY COLUMN ATTRIBUTES
Especifica que, si están disponibles, los atributos de la columna de identidad (como los valores START WITH, INCREMENT BY y CACHE) se heredan de la definición de la tabla de origen. Estos atributos pueden heredarse si el elemento de la columna correspondiente en la tabla, vista o fullselect es el nombre de una columna de una tabla o el nombre de una columna de una vista que se asigna directa o indirectamente al nombre de columna de una tabla base con el atributo de identidad. En otros casos, las columnas de la nueva tabla temporal no heredan los atributos de identidad. Las columnas de la nueva tabla no heredan los atributos de identidad en los siguientes casos:
  • La lista de selección del fullselect incluye varias instancias de un nombre de columna de identidad (es decir, seleccionar la misma columna más de una vez).
  • La lista de selección de fullselect incluye varias columnas de identidad (es decir, implica una unión).
  • La columna de identidad se incluye en una expresión de la lista de selección.
  • La selección completa incluye una operación de conjunto.
EXCLUIR LOS ATTRIBUTOS DE LA COLUMNA DE LA MARCA DE TIEMPO DE CAMBIO DE FILA o INCLUIR LOS ATTRIBUTOS DE LA COLUMNA DE LA MARCA DE TIEMPO DE CAMBIO DE FILA
Especifica si los atributos de la columna de marca de tiempo de cambio de fila se heredan de la definición del origen de la tabla de resultados.
EXCLUIR LOS ATTRIBUTOS DE LA COLUMNA DE LA FECHA Y HORA DE CAMBIO DE FILA
Especifica que los atributos de columna de marca de tiempo de cambio de fila no se heredan de la definición de la tabla de resultados de origen. Este es el valor predeterminado.
INCLUIR LA COLUMNA DE LA MARCA DE TIEMPO DE CAMBIO DE FILA ATRIBUTOS
Especifica que, si están disponibles, los atributos de columna de marca de tiempo de cambio de fila se heredan de la definición de la tabla de origen. Estos atributos pueden heredarse si el elemento de la columna correspondiente en la tabla, vista o fullselect es el nombre de una columna de una tabla o el nombre de una columna de una vista que se asigna directa o indirectamente al nombre de columna de una tabla base definida como una columna de marca de tiempo de cambio de fila. En otros casos, las columnas de la nueva tabla temporal no heredan los atributos de columna de marca de tiempo de cambio de fila. Las columnas de la nueva tabla no heredan los atributos de marca de tiempo de cambio de fila en los siguientes casos:
  • La lista de selección del fullselect incluye varias instancias de un nombre de columna de marca de tiempo de cambio de fila (es decir, seleccionar la misma columna más de una vez).
  • La lista select de fullselect incluye varios nombres de columna de marca de tiempo de cambio de fila (es decir, implica una unión).
  • La columna de marca de tiempo de cambio de fila se incluye en una expresión de la lista de selección.
  • La selección completa incluye una operación de conjunto (como la unión).
EXCLUIR VALORES PREDETERMINADOS DE COLUMNA, INCLUIR VALORES PREDETERMINADOS DE COLUMNA, o UTILIZAR VALORES PREDETERMINADOS DE TIPO
Especifica si los valores predeterminados de las columnas se heredan de la definición de la tabla de resultados de origen. EXCLUDING COLUMN DEFAULTS, INCLUDING COLUMN DEFAULTS y USING TYPE DEFAULTS no deben especificarse si se especifica la cláusula LIKE.
EXCLUDING COLUMN DEFAULTS
Especifica que los valores predeterminados de la columna no se heredan de la definición de la tabla de origen. Los valores predeterminados de la columna de la nueva tabla son nulos o no hay valores predeterminados. Si la columna puede ser nula, el valor predeterminado es el valor nulo. Si la columna no puede ser nula, no hay valor predeterminado y se produce un error si no se proporciona un valor para una columna en una operación de inserción o actualización, o LOAD para la nueva tabla.
INCLUDING COLUMN DEFAULTS
Especifica que se heredan los valores predeterminados de columna para cada columna actualizable de la definición de la tabla de origen. Las columnas que no se pueden actualizar no tienen un valor predeterminado definido en la columna correspondiente de la tabla creada. La existencia de un desencadenante INSTEAD OF para una vista no afecta a la herencia de los valores predeterminados.
USO DE TIPOS PREDETERMINADOS
Especifica que los valores predeterminados de la tabla dependen del tipo de datos de las columnas que resultan de fullselect, de la siguiente manera:
Tipo de datos
Valor predeterminado:
Numérico
0
Serie de caracteres de longitud fija
Blancos
Serie gráfica de longitud fija
Blancos
Serie binaria de longitud fija
Ceros hexadecimales
serie de longitud variable
Una serie de longitud 0
Carácter de longitud fija o gráfico de longitud fija
Una serie de espacios en blanco
Binario de longitud fija
Ceros hexadecimales
Fecha
CURRENT DATE
Hora
CURRENT TIME
Marca de tiempo (entero ) sin zona horaria
FECHA Y HORA ACTUAL (p) SIN ZONA HORARIA, donde p es la precisión de la fecha y hora correspondiente.
Marca de tiempo (entero ) con zona horaria
FECHA Y HORA ACTUAL (p) CON ZONA HORARIA donde p es la precisión de la marca de tiempo correspondiente.

tabla-resultados-as

tabla-resultados-as
Especifica que las definiciones de las columnas de la tabla se basan en el resultado de fullselect.
nombre-columna
Designa las columnas de la tabla. Si se especifica una lista de nombres de columna, esta debe constar de tantos nombres como columnas haya en la tabla de resultados de la selección completa. Cada nombre-columna debe ser exclusivo y no calificado. Si no se especifica una lista de nombres de columnas, las columnas de la tabla heredan los nombres de las columnas de la tabla de resultados de la selección completa.

Debe especificarse una lista de nombres de columnas si la tabla de resultados de fullselect tiene nombres de columnas duplicados o una columna sin nombre. Una columna sin nombre es una columna derivada de una constante, función, expresión u operación de conjunto que no se nombra mediante la cláusula AS.

AS (selección completa)
Especifica que la definición de la tabla se basa en las definiciones de columna del resultado de fullselect. El uso de AS (fullselect ) es una definición implícita de n columnas para la tabla, donde n es el número de columnas que resultaría del fullselect. Las columnas de la nueva tabla se definen por las columnas que resultan de fullselect. Cada elemento de la lista de selección debe tener un nombre único. La cláusula AS puede utilizarse en la cláusula select para proporcionar nombres únicos.

La definición implícita incluye el nombre de la columna, el tipo de datos, la longitud, la precisión, la escala y la característica de anulabilidad de cada una de las columnas de resultados de fullselect. La longitud de cada columna no debe ser 0. Otros atributos de columna, como DEFAULT e IDENTITY, no se heredan de fullselect. Una columna de la tabla nueva que se corresponde a una columna implícitamente oculta de la tabla base a la que se hace referencia en la selección completa no se considera oculta en la nueva tabla. Los atributos de columna generados no se heredan de fullselect. Es decir, una nueva columna de la tabla no se considera una columna generada. Un FIELDPROC se hereda para una columna si el elemento de selección correspondiente del fullselect es una columna que se puede asignar a una columna de una tabla base o una vista. La nueva tabla contiene una columna de etiqueta de seguridad si solo una tabla en la selección completa contiene una columna de etiqueta de seguridad y el ID de autorización principal del extracto tiene una etiqueta de seguridad válida.

Inicio del cambioLa lista SELECT más externa del fullselect no debe hacer referencia a datos codificados con diferentes esquemas de codificación. Una excepción es que la lista SELECT más externa puede contener una mezcla de columnas EBCDIC y Unicode. En este caso, la nueva tabla es una tabla EBCDIC con una o varias columnas Unicode.fin del cambio

La definición implícita no incluye ningún otro atributo de la tabla o vista identificada. Por ejemplo, la nueva tabla no tiene clave principal ni clave foránea. La tabla se crea en el espacio de tablas implícita o explícitamente especificado mediante la cláusula IN y la tabla tiene cualquier otra cláusula opcional sólo si la cláusula opcional se especifica.

Si se especifica IN ACCELERATOR, no se puede especificar AS (fullselect ).

El propietario de la tabla que se está creando debe tener el privilegio SELECT en las tablas o vistas a las que se hace referencia en el fullselect, o el conjunto de privilegios debe incluir la autoridad SYSADM o DBADM para la base de datos en la que residen las tablas del fullselect. Tener privilegios SELECT significa que el propietario tiene al menos una de las siguientes autorizaciones.

  • Propiedad de las tablas o vistas a las que se hace referencia en el fullselect
  • El privilegio SELECT en las tablas y vistas a las que se hace referencia en el fullselect
  • Autorización SYSADM
  • Autoridad DBADM para la base de datos en la que residen las tablas de fullselect

Es posible que se necesiten privilegios adicionales para acceder a otros objetos a los que se hace referencia en fullselect.

El fullselect no debe:

  • Dar como resultado una columna que tenga un tipo de datos ROWID, BLOB, CLOB, DBCLOB o XML, o un tipo distinto basado en estos tipos de datos.
  • Incluir varias columnas de etiquetas de seguridad.
  • Incluya una expresión de VALOR ANTERIOR o VALOR SIGUIENTE.
  • Consulte las variables de host o incluya marcadores de parámetros.
  • Incluir una instrucción de cambio de datos SQL en la cláusula FROM.
  • Inicio del cambioEn el SELECT más externo, haga referencia a una combinación de datos ASCII y EBCDIC, o a una combinación de datos ASCII y Unicode.fin del cambio
  • Resultado en una columna que es una matriz.
  • Hacer referencia a un objeto remoto.
  • Consulte una tabla solo para aceleradores.
WITH NO DATA
Especifica que la consulta se utiliza únicamente para definir los atributos de la nueva tabla. La tabla no se rellena utilizando los resultados de fullselect y no se puede utilizar la instrucción REFRESH TABLE.

Si las tablas que se especifican en la fila de uso de fullselect utilizan controles de acceso de fila o controles de acceso de columna, los controles de acceso de fila y los controles de acceso de columna no están definidos para la nueva tabla.

definición-consulta-materializada

definición-de-consulta-materializada
Especifica que las definiciones de columna de la tabla de consulta materializada se basan en el resultado de un fullselect. Si se especifican opciones de tabla de consulta materializada, se puede utilizar la instrucción REFRESH TABLE para rellenar la tabla con los resultados del fullselect.
nombre-columna
Designa las columnas de la tabla. Si se especifica una lista de nombres de columna, esta debe constar de tantos nombres como columnas haya en la tabla de resultados de la selección completa. Cada nombre-columna debe ser exclusivo y no calificado. Si no se especifica una lista de nombres de columnas, las columnas de la tabla heredan los nombres de las columnas de la tabla de resultados de la selección completa.

Debe especificarse una lista de nombres de columnas si la tabla de resultados de fullselect tiene nombres de columnas duplicados o una columna sin nombre. Una columna sin nombre es una columna derivada de una constante, función, expresión u operación de conjuntos que no se designa utilizando la cláusula AS de la lista de selección.

AS (selección completa)
Especifica que la definición de la tabla se basa en las definiciones de columna del resultado de fullselect. El uso de AS (fullselect ) es una definición implícita de n columnas para la tabla, donde n es el número de columnas que resultaría del fullselect. Las columnas de la nueva tabla se definen por las columnas que resultan de fullselect. Cada elemento de la lista de selección debe tener un nombre único. La cláusula AS puede utilizarse en la cláusula select para proporcionar nombres únicos.

La definición implícita incluye el nombre de la columna, el tipo de datos, la longitud, la precisión, la escala y la característica de anulabilidad de cada una de las columnas de resultados de fullselect. La longitud de cada columna no debe ser 0. Otros atributos de columna, como DEFAULT, IDENTITY y restricciones únicas, no se heredan de fullselect. Una columna de la tabla nueva que se corresponde a una columna implícitamente oculta de la tabla base a la que se hace referencia en la selección completa no se considera oculta en la nueva tabla. Los atributos de columna generados no se heredan de fullselect. Es decir, la nueva columna de la tabla de consulta materializada no se considera una columna generada. Un FIELDPROC se hereda para una columna si el elemento de selección correspondiente del fullselect es una columna que se puede asignar directamente a una columna de una tabla base o una vista en la cláusula FROM del fullselect. La tabla de consulta materializada contiene una columna de etiqueta de seguridad si solo una tabla en la selección completa contiene una columna de etiqueta de seguridad y el ID de autorización principal de la instrucción tiene una etiqueta de seguridad válida.

Inicio del cambioLa lista SELECT más externa de fullselect puede incluir columnas de resultados definidas como columnas EBCDIC y columnas de resultados definidas como columnas Unicode. En este caso, la tabla de consulta materializada es una tabla EBCDIC con una o más columnas Unicode.fin del cambio

Autorización para crear tablas de consulta materializadas
El propietario de la tabla que se está creando debe tener el privilegio SELECT en las tablas o vistas a las que se hace referencia en el fullselect, o el conjunto de privilegios debe incluir la autoridad SYSADM o DBADM para la base de datos en la que residen las tablas del fullselect. Tener privilegios SELECT significa que el propietario tiene al menos una de las siguientes autorizaciones:
  • Propiedad de las tablas o vistas a las que se hace referencia en el fullselect
  • El privilegio SELECT en las tablas y vistas a las que se hace referencia en el fullselect
  • Autorización SYSADM
  • Autoridad DBADM para la base de datos en la que residen las tablas de fullselect

Es posible que se necesiten privilegios adicionales para acceder a otros objetos a los que se hace referencia en fullselect.

Las reglas para establecer los calificadores de los nombres utilizados en fullselect son las mismas que las reglas utilizadas para establecer los calificadores de table-name.

Las siguientes restricciones se aplican al crear tablas de consulta materializadas. Cuando fullselect no satisface las restricciones, se produce un error:

  • La longitud de cada columna de resultados de la selección completa no debe ser 0.
  • El fullselect no puede contener una columna de tipo de datos LOB o XML.
  • No más de una tabla en el fullselect puede contener una columna de etiquetas de seguridad.
  • El fullselect no debe contener una especificación de punto.
  • Inicio del cambioLa lista SELECT más externa no debe hacer referencia a datos codificados con una combinación de conjuntos CCSID ASCII y EBCDIC, o una combinación de conjuntos CCSID ASCII y Unicode.fin del cambio
  • El objeto que se especifica en la cláusula FROM de fullselect no puede ser una vista con columnas de longitud 0.
  • Inicio del cambioLa fullselect no puede contener una referencia a una tabla temporal global creada, una tabla temporal global declarada, una tabla sólo de acelerador, una tabla de directorio u otra tabla de consulta materializada.fin del cambio
  • Si se especifica IN ACCELERATOR, no se puede especificar materialized-query-definition.
  • El fullselect no puede hacer referencia directa o indirecta a una tabla base que haya sido activada para el control de acceso de fila o columna o a una tabla base para la que se haya definido un permiso de fila o una máscara de columna.
  • La selección completa no debe hacer referencia a variables del lenguaje principal ni incluir marcadores de parámetro.
  • El fullselect no debe hacer referencia a variables globales.
  • Inicio del cambioEl fullselect no debe incluir las siguientes funciones incorporadas: LISTAGG, PERCENTILE_CONT, o PERCENTILE_DISC.fin del cambio
Restricciones adicionales cuando la OPTIMIZACIÓN DE CONSULTAS ESTÁ ACTIVADA:
  • La selección completa debe ser una subselección.
  • La subselección no puede incluir lo siguiente:
    • Un registro especial
    • una selección completa escalar
    • Una columna de indicación de fecha y hora de cambio de fila
    • Una expresión ROW CHANGE
    • Expresión para la que se aplican valores de zona horaria implícitos (por ejemplo, convertir una marca de tiempo en una marca de tiempo con zona horaria)
    • La función incorporada RAND
    • La función integrada RID
    • Una función escalar o de tabla definida por el usuario que no es determinista o que tiene acciones externas
    • Cualquier predicado que incluya una subconsulta
    • Inicio del cambioUna expresión de valor de fila en un predicadofin del cambio
    • Una combinación utilizando la sintaxis INNER JOIN, o una combinación externa
    • Una correlación lateral
    • Una expresión de tabla anidada o vista que requiere materialización temporal
    • Una referencia directa o indirecta a una tabla que utiliza controles de acceso de fila o columna activados, o una tabla para la que se han definido controles de acceso de fila o columna.
    • Una cláusula FETCH FIRST
    • una referencia a una variable global
    • Una tabla derivada de una colección (UNNEST)
    • Una cláusula de CONJUNTO o supergrupos
  • Si se hace referencia a una tabla con una etiqueta de seguridad, la columna de la etiqueta de seguridad debe ser referenciada en la lista de selección externa de la subselección.
  • Si la subselección hace referencia a una vista, la selección completa en la definición de la vista debe satisfacer todas las demás restricciones.
opciones-de-tabla-actualizables
Especifica las opciones para una tabla de consulta materializada actualizable. La cláusula ORDER BY está permitida, pero solo la utiliza REFRESH. La cláusula ORDER BY puede mejorar la localidad de referencia de los datos en la tabla de consulta materializada.
DATA INITIALLY DEFERRED
Especifica que los datos no se insertan en la tabla de consulta materializada cuando se crea. Utilice la instrucción REFRESH TABLE para rellenar la tabla de consulta materializada, o utilice la instrucción INSERT para insertar datos en una tabla de consulta materializada mantenida por el usuario.
REFRESH DEFERRED
Especifica que los datos de la tabla se pueden actualizar en cualquier momento mediante la instrucción REFRESH TABLE. Los datos de la tabla solo reflejan el resultado de la consulta como una instantánea en el momento en que se procesa la instrucción REFRESH TABLE o cuando se actualizó por última vez para una tabla de consulta materializada mantenida por el usuario.
MANTENIDO POR EL SISTEMA o MANTENIDO POR EL USUARIO
Especifica cómo se mantienen los datos en la tabla de consulta materializada.
MAINTAINED BY SYSTEM
Especifica que la tabla de consulta materializada es mantenida por el sistema. En la tabla solo se permite la sentencia REFRESH. Este es el valor predeterminado.
MAINTAINED BY USER
Especifica que la tabla de consulta materializada es mantenida por el usuario, que puede utilizar la utilidad LOAD, una sentencia SQL de modificación de datos, una sentencia SQL SELECT from de modificación de datos o sentencias SQL REFRESH TABLE en la tabla.
ENABLE QUERY OPTIMIZATION o DISABLE QUERY OPTIMIZATION
Especifica si esta tabla de consulta materializada se puede utilizar para la optimización.
ENABLE QUERY OPTIMIZATION
Especifica que la tabla de consulta materializada se puede utilizar para la optimización de consulta. Si el fullselect especificado no satisface las restricciones para la optimización de la consulta, se produce un error.

ACTIVAR OPTIMIZACIÓN DE CONSULTAS es la opción predeterminada.

El fullselect no debe contener una especificación de punto.

DISABLE QUERY OPTIMIZATION
Especifica que la tabla de consulta materializada no se puede utilizar para la optimización de consultas. La tabla todavía puede consultarse directamente.

ENTRADA

INdatabase-name.table-space-name o IN DATABASE nombre-de-base-de-datos
Identifica la base de datos y el espacio de tabla en el que se crea la tabla. Ambos formularios son opcionales.

Si especifica nombre-base-datos y nombre-espacio-tabla, la base de datos debe estar descrita en el catálogo del servidor actual. La base de datos no debe ser una base de datos de archivos de trabajo ( DSNDB06 ). El espacio de la tabla debe pertenecer a la base de datos que especifique.

Si especifica nombre-base-datos pero no nombre-espacio-tabla, se crea implícitamente un espacio de tabla en nombre-base-datos. El nombre del espacio de la mesa se deriva del nombre de la mesa. El grupo de búferes que se utiliza es el grupo de búferes predeterminado para los datos de usuario que se especifica en el panel de instalación DSNTIP1.

Si especifica un espacio de tabla pero no una base de datos, se utiliza la base de datos que contiene el espacio de tabla.

Si no se especifica la cláusula IN, se crea implícitamente una base de datos con el nombre DSNxxxxx, donde xxxxx es un número de cinco dígitos. También se crea implícitamente un espacio en la mesa.

Si especifica nombre-espacio-tabla, el espacio de tabla no puede ser uno de los siguientes espacios de tabla:

  • Un espacio de mesa que se creó de forma implícita
  • Un espacio de mesa dividido que ya contiene una mesa
  • Un espacio de mesa LOB
  • Un espacio de tabla XML
  • Inicio del cambioFL 504 Un espacio de mesa no UTSfin del cambio

Si especifica un espacio de tabla particionado, no podrá cargar ni utilizar la tabla hasta que se cree su esquema particionado.

No puede especificar un nombre en el formato de un nombre de base de datos creado implícitamente, que es DSNxxxxx, donde xxxxx es un número de cinco dígitos.

Inicio del cambioSi especifica table-space-name, pero no especifica database-name, o no especifica la cláusula IN, los usuarios que tienen autoridad para crear espacios de tabla o tablas en la base de datos DSNDB04 tienen autoridad para crear tablas y espacios de tabla en la base de datos creada implícitamente.fin del cambio

Si no especifica table-space-name, el conjunto de privilegios debe tener: autoridad SYSADM o SYSCTRL; autoridad DBADM, DBCTRL o DBMAINT para la base de datos; o el privilegio CREATETS para la base de datos. También debe tener el privilegio USE para el grupo de búfer predeterminado en la base de datos y el grupo de almacenamiento predeterminado.

Para los espacios de tablas creados implícitamente, Db2 selecciona el grupo de búferes como se describe en Espacios de tablas definidos implícitamente.

IN ACCELERATOR nombre-acelerador
Especifica que la tabla es solo una tabla de acelerador. accelerator-name identifica el acelerador en el que se definirá la tabla.

Inicio del cambioFL 509 Puede especificar un alias (nombre lógico) para accelerator-name. Para obtener más información, consulte Uso de un alias para un acelerador. Para crear una tabla de alta disponibilidad sólo para aceleradores, especifique un alias de ubicación que represente varios aceleradores para definir la tabla en todos los aceleradores asociados al alias de ubicación.fin del cambio

Si especifica una tabla de solo acelerador, la tabla y los datos de la tabla existen solo en el acelerador, no en Db2. Sin embargo, la definición de tabla y columna de la tabla de solo acelerador se encuentra en las tablas de catálogo de Db2 .

bloque de cláusula de partición

PARTICIÓN POR TAMAÑO o PARTICIÓN POR GAMA
Especifica el esquema de partición de la tabla. Para obtener más información, consulte la sección sobre la partición de datos en las tablas de Db2.
PARTITION BY SIZE
Especifica que la tabla se crea en un espacio de tabla de partición por crecimiento. Si la cláusula IN especifica un nombre-de-espacio-de-tabla, debe identificar un espacio de tabla de partición por crecimiento. Si la cláusula IN no especifica un nombre de espacio de tabla existente y la cláusula PARTITION BY no está especificada, PARTITION BY SIZE es el valor predeterminado.

Si se especifica EN ACELERADOR, no debe especificarse PARTICIÓN POR TAMAÑO.

CUALQUIER número entero G
Especifica que la tabla debe dividirse por crecimiento, cada G bytes enteros. el número entero no debe ser mayor de 256. Si la cláusula IN identifica un espacio de tabla, el entero debe ser el mismo que el valor DSSIZE que está en vigor para el espacio de tabla que contendrá la tabla.

el número entero puede estar separado de G por 0 o más espacios.

PARTITION BY RANGE
Especifica el esquema de partición de rango para la tabla (las columnas que se utilizan para dividir los datos). Cuando se especifica esta cláusula, el espacio de la tabla está completo y no es necesario crear un índice particionado en la tabla. Si se utiliza esta cláusula, la cláusula ENDING AT no puede utilizarse en una instrucción CREATE INDEX posterior para esta tabla.

PARTITION BY RANGE no debe especificarse para una tabla que se crea en un espacio de tabla de partición por crecimiento. Si se especifica EN ACELERADOR, no debe especificarse PARTICIÓN POR RANGO.

expresión-partición
Especifica los datos de clave en que se define el rango para determinar la partición de datos de destino de los datos.
nombre-columna
Especifica las columnas de la clave. Cada nombre de columna debe identificar una columna de la tabla. No especifique más de 64 columnas ni la misma columna más de una vez. La suma de los atributos de longitud de las columnas no debe ser mayor que 255 - n, donde n es el número de columnas que pueden contener valores nulos. No especifique un nombre de columna calificado.

Una marca de tiempo con columna de zona horaria (o una columna con un tipo distinto que se base en la marca de tiempo con tipo de datos de zona horaria) solo puede especificarse como la última columna en una clave de partición.

No especifique una columna para el nombre de columna si la columna se define de la siguiente manera:

  • una columna LOB (o una columna con un tipo distinto que se base en un tipo de datos LOB)
  • una columna BINARIA (o una columna con un tipo distinto que se base en un tipo de datos BINARIO)
  • una columna VARBINARY (o una columna con un tipo distinto que se base en un tipo de datos VARBINARY)
  • una columna DECFLOAT (o una columna con un tipo distinto basado en un tipo de datos DECFLOAT)
  • Una columna XML

Todas las columnas de caracteres y cadenas gráficas de la clave deben definirse con el mismo esquema de codificación.

NULLS LAST
Especifica que los valores nulos se tratan como infinito positivo a efectos de comparación.
ASC
Ordena las entradas en orden ascendente por columna. ASC es el valor predeterminado.
DESC
Ordena las entradas en orden descendente por la columna.
elemento-partición
Especifica los rangos de una clave de particionamiento de datos y el espacio de tablas donde se almacenarán las filas de la tabla del rango.
PARTITION entero
entero es el número físico de una partición en el espacio de la tabla. Debe especificarse una cláusula PARTITION para cada partición del espacio de tabla. En este contexto, más alto significa más alto en las secuencias de clasificación de las columnas. En una columna definida como ascendente (ASC), el más alto y el más bajo tienen sus significados habituales. En una columna definida como descendente (DESC), el valor real más bajo es el más alto en la secuencia de clasificación.
FINALIZANDO EN (constante, VALOR MÁXIMO o VALOR MÍNIMO,...)
Define la tecla de límite para un límite de partición. Especifique al menos un valor (constante, MAXVALUE o MINVALUE) después de ENDING AT en cada cláusula PARTITION. Puede utilizar tantos valores como columnas haya en la clave. La concatenación de todos los valores es el valor más alto de la clave para ascendente y el más bajo para descendente.
constante
Especifica un valor constante con un tipo de datos que debe ajustarse a las reglas para asignar ese valor a la columna. Si una constante de cadena es más larga o más corta de lo requerido por el atributo de longitud de su columna, la constante se trunca o se rellena a la derecha hasta la longitud requerida. Si la columna es ascendente, el carácter de relleno es X'FF '. Si la columna es descendente, el carácter de relleno es X'00 '. La precisión y la escala de una constante decimal no deben ser mayores que la precisión y la escala de su columna correspondiente. No se puede especificar una constante de cadena hexadecimal (GX).
MAXVALUE
Especifica un valor mayor que el valor máximo para la clave de límite de un límite de partición (es decir, todo X'FF' independientemente de si la columna es ascendente o descendente). Si todas las columnas de la clave de partición son ascendentes, no se puede especificar una constante o la cláusula MINVALUE después de MAXVALUE. Después de especificar MAXVALUE, todas las columnas subsiguientes deben ser MAXVALUE.
MINVALUE
Especifica un valor que es menor que el valor mínimo para la clave de límite de un límite de partición (es decir, todo X'00' independientemente de si la columna es ascendente o descendente). Si todas las columnas de la clave de partición son descendentes, no se puede especificar una constante o la cláusula MAXVALUE después de MINVALUE. Después de especificar MINVALUE, todas las columnas posteriores deben ser MINVALUE.
Los valores clave están sujetos a las siguientes reglas:
  • El primer valor corresponde a la primera columna de la clave, el segundo valor a la segunda columna, y así sucesivamente. Utilizar menos valores que columnas en la clave tiene el mismo efecto que utilizar los valores más altos o más bajos para las columnas omitidas, dependiendo de si son ascendentes o descendentes.
  • El valor más alto de la clave en cualquier partición debe ser inferior al valor más alto de la clave en la siguiente partición para los casos ascendentes.
  • Se aplican los valores especificados para la última partición. El valor especificado para la última partición es el valor más alto de la clave que se puede colocar en la tabla. Cualquier valor clave mayor que el valor especificado para la última partición está fuera de rango.
  • Si la concatenación de todos los valores supera los 255 bytes, solo se tendrán en cuenta los primeros 255 bytes.
  • Si una clave incluye una columna ROWID o una columna con un tipo distinto basado en un tipo de datos ROWID, se consideran 17 bytes de la constante especificada para la columna ROWID correspondiente.
  • Si se especifica un valor nulo para la clave de partición y la clave es ascendente, se devuelve un error a menos que se especifique MAXVALUE. Si la clave es descendente, se devuelve un error a menos que se especifique MINVALUE.
partición-hash-space
Véase partición-hash-espacio.
INCLUSIVE
Especifica que los valores de rango especificados se incluyen en la partición de datos.

cláusula de organización

Véase la cláusula de organización.

Otras opciones

EDITPRO C nombre del programa
Identifica el código escrito por el usuario que implementa el procedimiento de edición para la tabla. El procedimiento de edición debe existir en el servidor actual. El procedimiento se invoca durante la ejecución de una sentencia SQL de modificación de datos o LOAD y todas las operaciones de recuperación de filas en la tabla.

Una rutina de edición recibe una fila de tabla completa y puede transformar esa fila de cualquier manera. Además, recibe una fila transformada y debe devolverla a su forma original.

Para obtener información sobre cómo escribir una rutina de salida EDITPROC, consulte Procedimientos de edición.

WITH ROW ATTRIBUTES
Especifica que la lista de parámetros del procedimiento de edición contiene una dirección para la descripción de una fila. CON ROW ATTRIBUTES no debe especificarse para una tabla con una columna de identidad, LOB, XML, ROWID o SECURITY LABEL. CON ATRIBUTOS DE FILA es el valor predeterminado. Cuando se especifica CON ROW ATTRIBUTES, los nombres de las columnas de la tabla no deben tener más de 18 caracteres EBCDIC SBCS de longitud.
WITHOUT ROW ATTRIBUTES
Especifica que la descripción de la fila no se proporciona al procedimiento de edición. Al entrar en el procedimiento de edición, la dirección de la descripción de la fila en la lista de parámetros contiene un valor de cero.
VALIDPROC nombre del programa
Designa el nombre del programa como la rutina de salida de validación para la tabla. La escritura de una rutina de salida de validación se describe en Rutinas de validación.

La rutina de validación puede inhibir una operación de carga, inserción, actualización o eliminación en cualquier fila de la tabla: antes de que se lleve a cabo la operación, se pasa la fila al procedimiento. Los valores representados por cualquier columna LOB o XML de la tabla no se pasan a la rutina de validación. En una operación de inserción o actualización, si la tabla tiene una columna de etiqueta de seguridad y el usuario no tiene privilegios de escritura, el valor de la etiqueta de seguridad del usuario se pasa a la rutina de validación como el valor de la columna. Después de examinar la fila, el procedimiento devuelve un valor que indica si la operación debe continuar. Un uso típico es imponer restricciones a los valores que pueden aparecer en varias columnas. Si se especifica IN ACCELERATOR, no se debe especificar VALIDPROC.

Una tabla solo puede tener un procedimiento de validación a la vez. En una instrucción ALTER TABLE, puede designar un procedimiento de sustitución o interrumpir el uso de un procedimiento de validación.

Si omite VALIDPROC, la tabla no tiene rutina de validación.

AUDIT
Identifica los tipos de acceso a esta tabla que provocan la realización de auditorías. Para obtener información sobre las clases de seguimiento de auditoría, consulte Tipos de seguimientos de auditoría ( Db2 ) y el comando -START TRACE ( Db2 ).

Si se actualiza una tabla de consulta materializada con la instrucción REFRESH TABLE, la auditoría también se produce durante la operación REFRESH TABLE. AUDIT funciona como de costumbre para las operaciones de cambio de datos LOAD y SQL en una tabla de consulta materializada mantenida por el usuario.

NONE
Especifica que no se debe realizar ninguna auditoría cuando se acceda a esta tabla. Este es el valor predeterminado.
CHANGES
Especifica que la auditoría debe realizarse cuando se accede a la tabla durante la primera operación de inserción, actualización o eliminación. Sin embargo, la auditoría solo se realiza si la clase de seguimiento de auditoría adecuada está activa.
ALL
Especifica que la auditoría debe realizarse cuando se accede a la tabla durante la primera operación de cualquier tipo realizada por un proceso de utilidad o aplicación. Inicio del cambioSin embargo, la auditoría sólo se realiza si la clase de rastreo de auditoría apropiada está activa y el acceso no se realiza con COPY, RECOVER, REPAIR, LOAD con un conjunto de datos de entrada ficticio, o cualquier utilidad independiente.fin del cambio

Si la tabla se modifica posteriormente con una instrucción ALTER TABLE, se audita la instrucción ALTER TABLE para detectar intentos correctos y fallidos en los siguientes casos, si la clase de seguimiento de auditoría adecuada está activa:

  • AUDIT se cambia a NONE, CHANGES, o en una tabla auditada o no auditada ALL en una tabla auditada o no auditada.
  • AUDIT CHANGES o AUDIT ALL está en vigor.

Si se especifica EN ACELERADOR, no se deben especificar AUDITORÍA NINGUNA, CAMBIOS y TODOS.

OBID entero
Identifica el OBID que se utilizará para esta tabla. Un OBID es el identificador del descriptor interno de un objeto. El número entero debe ser mayor que 1 y no debe identificar un OBID existente o utilizado anteriormente de la base de datos. Si omite OBID, Db2 genera un valor.
La siguiente declaración recupera el valor de OBID:
  SELECT OBID
    FROM SYSIBM.SYSTABLES
    WHERE CREATOR = 'ccc' AND NAME = 'nnn';

Aquí, nnn es el nombre de la tabla y ccc es el creador de la tabla.

DATA CAPTURE
Especifica si el registro de las siguientes acciones en la tabla incluye información adicional para respaldar el procesamiento de la replicación de datos:
  • Operaciones de modificación de datos SQL
  • Añadir columnas (utilizando la cláusula ADD COLUMN)
  • Cambiar columnas (usando la cláusula ALTER COLUMN)

Para obtener más información, consulte Modificar una tabla para capturar datos modificados.

Si se actualiza una tabla de consulta materializada con la instrucción REFRESH TABLE, el registro de la información aumentada se produce durante la operación REFRESH TABLE. La CAPTURA DE DATOS funciona como de costumbre para las operaciones de inserción, actualización y eliminación en una tabla de consulta materializada mantenida por el usuario.

Una tabla con datos que se almacena solo en una tabla de solo acelerador no se puede definir con este atributo.

NONE
No registre información adicional en el registro. Este es el valor predeterminado.
CHANGES
Escribir datos adicionales sobre las actualizaciones de SQL en el registro. La información sobre los valores que representan las columnas LOB o XML no está disponible. No especifique CAMBIOS DE CAPTURA DE DATOS para tablas que residan en espacios de tablas que especifiquen NO REGISTRADO.
WITH RESTRICT ON DROP
Indica que la tabla solo se puede eliminar mediante el comando REPAIR DBD DROP. Además, la base de datos y el espacio de tabla que contienen la tabla solo se pueden eliminar mediante REPAIR DBD DROP.

La cláusula WITH RESTRICT ON DROP se puede eliminar utilizando la instrucción ALTER TABLE con la cláusula DROP RESTRICT ON DROP. Después de eliminar la cláusula WITH RESTRICT ON DROP de la definición de la tabla, la tabla, la base de datos y el espacio de tabla contenedor se pueden eliminar mediante la instrucción DROP.

Esquema de codificación CCSID
Especifica el esquema de codificación para los datos de serie almacenados en la tabla. Si la cláusula IN se especifica con un espacio de tabla, el valor debe coincidir con el esquema de codificación que ya se utiliza para el espacio de tabla especificado. Los CCSID específicos para SBCS, datos mixtos y gráficos están determinados por el espacio de tabla o la base de datos especificados en la cláusula IN. Si no se especifica la cláusula IN, el valor especificado se utiliza para la tabla que se está creando, así como para el espacio de tabla que Db2 crea implícitamente. Los CCSID específicos para SBCS, datos mixtos y gráficos se determinan mediante los CCSID predeterminados para el servidor para el esquema de codificación especificado. Los valores válidos son ASCII, EBCDIC y UNICODE.

Si se especifica IN ACCELERATOR, no se puede definir una columna Unicode en una tabla EBCDIC y no se puede definir una columna como ASCII mixta o gráfica. IBM® Db2 Analytics Accelerator for z/OS®: Procedimientos almacenados La referencia contiene una descripción completa de los esquemas de codificación permitidos en un acelerador.

Si no se especifica la cláusula CCSID, el esquema de codificación de la tabla depende de la cláusula IN:

  • Si se especifica la cláusula IN, se utiliza el esquema de codificación que ya se está utilizando para el espacio de tabla o la base de datos especificados en la cláusula IN.
  • Si no se especifica la cláusula IN, el esquema de codificación de la nueva tabla es el mismo que el esquema de la tabla que se especifica en la cláusula LIKE.

Inicio del cambioFL 500Si CCSID EBCDIC se especifica explícita o implícitamente, y cualquier columna de la tabla se define con la cláusula CCSID 1208 o CCSID 1200, CCSID EBCDIC representa el esquema de codificación por defecto para las columnas de caracteres o gráficos que no incluyan la cláusula CCSID 1208 o CCSID 1200. fin del cambio

Inicio del cambioFL 500Si se especifica la cláusula CCSID para una tabla de consulta materializada:fin del cambio

Inicio del cambio
  • Si el esquema de codificación en la cláusula CCSID es ASCII o Unicode, o si el esquema de codificación en la cláusula CCSID es EBCDIC y la tabla de resultados de fullselect no contiene columnas Unicode, el esquema de codificación especificado en la cláusula debe ser el mismo que el esquema para el CCSID de resultado de fullselect. El CCSID también debe ser el mismo que el CCSID del espacio de tabla para la tabla que se está creando.
  • Si el esquema de codificación en la cláusula CCSID es EBCDIC, y la tabla de resultados de fullselect contiene columnas Unicode, el esquema de codificación del espacio de tabla para la tabla debe ser EBCDIC.
fin del cambio
VOLÁTIL o NO VOLÁTIL
Especifica cómo elige Db2 acceder a la tabla.
VOLATILE
Especifica que Db2 utiliza el acceso de índice a la tabla siempre que sea posible para las operaciones SQL. Sin embargo, tenga en cuenta que la precarga de listas y otras técnicas de optimización podrían desactivarse cuando se utiliza VOLATILE.

Un caso en el que puede que desee utilizar VOLATILE es para una mesa cuyo tamaño puede variar mucho. Si las estadísticas se toman cuando la tabla está vacía o tiene solo unas pocas filas, es posible que esas estadísticas no sean apropiadas cuando la tabla tiene muchas filas.

Otro caso en el que puede que desee utilizar VOLATILE es para una tabla que contenga grupos de filas, según lo definido por la clave principal de la tabla. Todas las columnas de la clave principal de dicha tabla, excepto la última, indican el grupo al que pertenece una fila determinada. La última columna de la clave principal es el número de secuencia que indica el orden en el que se deben leer las filas del grupo. VOLATILE maximiza la concurrencia de operaciones en filas dentro de cada grupo, ya que normalmente se accede a las filas en el mismo orden para cada operación. Si se especifica EN ACELERADOR, no debe especificarse VOLÁTIL. Para este uso, el índice primario debe ser el único índice que se define en la tabla, y la precarga de lista está desactivada para garantizar la secuencia en la que se bloquean las filas.

NOT VOLATILE
Especifica que el acceso SQL a esta tabla debe basarse en las estadísticas actuales. La opción predeterminada es NO VOLÁTIL.
CARDINALITY
Una palabra clave opcional que actualmente no tiene efecto, pero que se proporciona para la compatibilidad de la familia de productos Db2 .
INICIADO SESIÓN o NOT LOGGED
Especifica si los cambios que se realizan en los datos de un espacio de tabla creado implícitamente se registran en el registro. Este parámetro se aplica a un espacio de tabla creado implícitamente y a todos los índices de esta tabla. Los espacios de tabla XML y los índices asociados a los espacios de tabla XML heredan el atributo de registro del espacio de tabla base asociado. Los índices auxiliares también heredan el atributo de registro del espacio de tabla base asociado.

No especifique INICIADA SESIÓN o NOT LOGGED si el nombre del espacio de tabla se especifica utilizando la cláusula IN nombre-del-espacio-de-la-tabla o si se especifica la cláusula IN ACCELERATOR.

INICIADA SESIÓN
Especifica que los cambios que se realizan en los datos de un espacio de tabla creado implícitamente se registran en el registro.

LOGGED es el valor predeterminado.

NOT LOGGED
Especifica que los cambios que se realizan en los datos de un espacio de tabla creado implícitamente no se registran en el registro.

NOT LOGGED evita que la información de deshacer y rehacer se registre en el registro. Sin embargo, la información de control de un espacio de tabla creado implícitamente seguirá registrándose en el registro.

Inicio del cambioCOMPRESS YES o COMPRESS NOfin del cambio
Inicio del cambioEspecifica si la compresión de datos se aplica a las filas de cualquier espacio de tabla creado implícitamente. El parámetro del subsistema IMPTSCMP especifica el valor predeterminado. Ver campo USE DATA COMPRESSION (parámetro del subsistema IMPTSCMP ).

Si se especifica la cláusula IN table-space-name o la IN ACCELERATOR se especifica, COMPRESS no debe especificarse.

YES
FL 509 Especifica que la compresión de datos se aplica a las filas del espacio de tabla creado implícitamente. Las filas no se comprimen hasta que la utilidad LOAD o REORG se ejecuta en la tabla en el espacio de tabla creado implícitamente, o el tamaño total de los datos de la fila alcanza el umbral de datos de compresión mientras se realiza una operación de inserción.

Si no se especifica una palabra clave para el algoritmo de compresión, se utiliza el algoritmo de compresión predeterminado. El algoritmo de compresión de datos viene determinado por el parámetro del subsistema TS_COMPRESSION_TYPE.

Si se especifica una palabra clave para el algoritmo de compresión:
  • Los espacios de tabla LOB que se crean implícitamente para las columnas LOB en esta tabla se definen como si se especificara COMPRESS YES sin un algoritmo de compresión. La compresión LOB es administrada por el hardware de compresión de datos zEnterprise® ( zEDC ), si está disponible.
  • Los espacios de tabla XML que se crean implícitamente para las columnas XML en esta tabla heredan el atributo COMPRESS.
Inicio del cambio
LONGITUD FIJA
FL 509 Especificó el algoritmo de compresión de datos de longitud fija.
Huffman
FL 509 Especifica el algoritmo de compresión de datos Huffman. Consulte Uso de la compresión Huffman para comprimir sus datos para conocer los requisitos para habilitar la compresión Huffman.
fin del cambio
NO
Especifica que la compresión de datos no se utiliza para las filas del espacio de tabla creado implícitamente. Las filas insertadas y actualizadas no están sujetas a compresión de datos.
fin del cambio
APPEND NO o APPEND YES
Especifica si se utiliza el procesamiento de anexos para la tabla. La cláusula APPEND no debe especificarse para una tabla que se cree en un espacio de tabla de un archivo de trabajo.
NEE
Especifica que el procesamiento de anexos no se utiliza para la tabla. Para las operaciones de inserción y carga, Db2 intentará colocar las filas de datos de forma bien agrupada con respecto al valor de la columna de clave de agrupación de la fila.

NO es el valor predeterminado.

YES
Especifica que las filas de datos deben colocarse en la tabla sin tener en cuenta la agrupación durante las operaciones de inserción y CARGA.
DSSIZE entero G
Especifica el tamaño máximo para un espacio de tabla de partición por crecimiento o partición por rango creado implícitamente. Este valor solo se aplica a un espacio de tabla base creado implícitamente, no a ningún espacio de tabla XML o LOB asociado creado implícitamente.

No especifique DSSIZE entero G si se cumple alguna de las siguientes condiciones:

  • El nombre del espacio de la tabla se especifica utilizando la cláusula " IN nombre-del-espacio-de-la-tabla ".
  • La PARTITION BY cláusula incluye la cláusula EVERY integer-constant G .
  • La declaración contiene una tabla de solo aceleradores.

El parámetro del subsistema IMPDSSIZE especifica el valor predeterminado. Véase IMPDSSIZE en la macro DSN6SYSP.

Para obtener información más detallada sobre la cláusula DSSIZE, consulte la instrucción CREATE TABLESPACE.

el número entero puede estar separado de G por 0 o más espacios.

BUFFERPOOL bpname
Especifica el búfer de memoria que se utilizará para un espacio de tabla creado implícitamente y determina el tamaño de página del espacio de tabla. Para las memorias intermedias de páginas 4KB, 8KB, 16KB y 32KB, los tamaños de página son 4 KB, 8 KB, 16 KB y 32 KB, respectivamente.

bpname debe identificar un grupo de búferes activado. El conjunto de privilegios debe incluir la autoridad SYSADM, la autoridad SYSCTRL o el privilegio USE en el grupo de búferes.

No especifique BUFFERPOOL bpname si el nombre del espacio de tabla se especifica utilizando la cláusula IN table-space-name o la IN ACCELERATOR se especifica la cláusula.

Si no se especifica la cláusula BUFFERPOOL, Db2 selecciona el grupo de memoria intermedia como se describe en Espacios de tablas definidos implícitamente.

Consulte las convenciones de nomenclatura en SQL para obtener más información sobre bpname.

MEMBER CLUSTER
Especifica que los datos que se insertan mediante una operación de inserción no se agrupan mediante el índice de agrupación implícito (el primer índice) ni el índice de agrupación explícito. Db2 coloca los datos en un espacio de tabla creado implícitamente en función del espacio disponible.

No especifique MEMBER CLUSTER si el nombre del espacio de tabla se especifica utilizando la cláusula IN nombre-del-espacio-de-la-tabla o si se especifica la cláusula IN ACCELERATOR.

TRACKMOD YES o TRACKMOD NO
Especifica si Db2 realiza un seguimiento de las páginas modificadas en las páginas de mapa de espacio de un espacio de tabla creado implícitamente. El parámetro del subsistema IMPTKMOD especifica el valor predeterminado. Ver IMPTKMOD en macro DSN6SYSP.

No especifique TRACKMOD YES o TRACKMOD NO si el nombre del espacio de la tabla se especifica utilizando la cláusula IN nombre-del-espacio-de-la-tabla o si se utiliza la cláusula IN ACCELERATOR .

TRACKMOD YES
Las páginas modificadas se rastrean en las páginas del mapa del espacio para ayudar a mejorar el rendimiento de las copias incrementales de imágenes.
TRACKMOD NO
Las páginas modificadas no se registran en las páginas del mapa del sitio. Db2 utiliza el valor LRSN en cada página para determinar si una página ha sido modificada.
Inicio del cambioPAGENUMfin del cambio
Inicio del cambioFL 500Identifica el tipo de numeración de páginas que se utiliza al crear un espacio de tabla partición por rango. Este valor se aplica a un espacio de tabla base creado implícitamente. El parámetro del subsistema PAGESET_PAGENUM especifica el valor PAGENUM predeterminado. Véase el campo PAGE SET PAGE NUMBERING (parámetro del subsistema PAGESET_PAGENUM ).
RELATIVO
Indica que la numeración interna de páginas se mantiene como un valor de 4 bytes sin número de partición. El número de página es una página relativa desde el inicio de la partición, y el número de partición se mantiene solo en la página de encabezado.
ABSOLUTO
Indica que la numeración interna de páginas se mantiene como un valor de 4 bytes que incluye un número de partición y un número de página. Distinguir qué bits representan la partición y cuáles representan el número de página requiere un valor de desplazamiento. El valor de desplazamiento es LOG base 2 (DSSIZE/(tamaño de página)).
fin del cambio

Notas para CREATE TABLE

Privilegios de propietario
El propietario de la tabla tiene todos los privilegios de la tabla (véase la sentencia GRANT (privilegios de tabla o vista )) con la capacidad de conceder estos privilegios a otros. Para obtener más información sobre la propiedad del objeto, consulte Autorización, privilegios, permisos, máscaras y propiedad del objeto.
Diseño de tabla
El diseño de tablas forma parte del proceso de diseño de bases de datos. Para más información, consulte el diseño de bases de datos Db2.
Si la cláusula IN DATABASE se especifica sin un nombre de espacio de tabla
Si especifica EN BASE DE DATOS (ya sea explícitamente o por defecto), pero no especifica un espacio de tabla, se crea implícitamente un espacio de tabla en la base de datos especificada. El nombre del espacio de la mesa se deriva del nombre de la mesa. El calificador del espacio de la tabla es el mismo que el calificador de la tabla. El propietario del espacio de la mesa es SYSIBM.

Para más información, consulte Espacios de tabla definidos implícitamente.

Si no se especifica la cláusula IN
Si no se especifica la cláusula IN, el comando Db2 crea implícitamente un espacio de tabla como se ha descrito anteriormente, pero el comando Db2 también elige una base de datos. Db2 crea un nombre en forma de DSNnnnnn, donde nnnnn está entre 00001 y el valor máximo de la secuencia SYSIBM.DSNSEQ_IMPLICITDB, que tiene un valor predeterminado de 10000, inclusive. El propietario de la base de datos es SYSIBM.
  • Si DSNnnnnn ya existe y es una base de datos creada implícitamente, el subsistema Db2 crea la tabla en esa base de datos.
  • Si DSNnnnnn no existe, el subsistema Db2 crea una base de datos con el nombre DSNnnnnn.

Si no se puede crear DSNnnnnn debido a un bloqueo, tiempo de espera agotado o condición de recurso no disponible, el subsistema Db2 incrementa nnnnn en uno e intenta el nombre de base de datos resultante. Si el subsistema Db2 alcanza el valor máximo de la secuencia SYSIBM.DSNSEQ_IMPLICITDB y el nombre de base de datos correspondiente no está disponible, el subsistema Db2 establece nnnnn en 00001 e intenta el nombre de base de datos resultante. Si el subsistema Db2 intenta crear la tabla un número de veces igual al valor máximo de la secuencia SYSIBM.DSNSEQ_IMPLICITDB sin éxito, se produce un error.

Objetos de sistema para espacios de tabla creados implícitamente
Si se crea implícitamente un espacio de tabla, también se crean implícitamente todos los siguientes objetos de sistema necesarios:
  • Índice de clave primaria de aplicación
  • Índice de clave exclusiva de aplicación
  • Cualquier espacio de tabla LOB, espacio de tabla auxiliar e índice auxiliar necesario
  • Índice ROWID (si la columna ROWID se define como GENERATED BY DEFAULT)

Cuando Db2 crea implícitamente un espacio de tabla base para una tabla con columnas LOB que pueden tener LOB en línea, Db2 crea el espacio de tabla base en formato de fila reordenada, independientemente del valor del parámetro del subsistema RRF.

Los atributos de un espacio de tablas creado implícitamente pueden modificarse mediante la sentencia ALTER TABLESPACE.

Creación de una tabla en un espacio de tabla segmentado (no UTS) (obsoleto)
No se puede crear una tabla en un espacio de tabla segmentado si se cumple alguna de las siguientes condiciones:
  • Inicio del cambioFL 504 La compatibilidad de aplicación efectiva de la sentencia CREATE TABLE es V12R1M504 o superior.fin del cambio
  • El espacio disponible en el conjunto de datos es menor que el tamaño de segmento especificado para el espacio de tabla, y
  • El conjunto de datos no se puede ampliar.
Función obsoleta: Inicio del cambioFL 504 Los espacios de tabla no UTS para tablas base están obsoletos. Las sentencias CREATE TABLESPACE que se ejecutan en el nivel de compatibilidad de aplicaciones V12R1M504 o superior siempre crean un espacio de tabla de partición por crecimiento o partición por rango, y las sentencias CREATE TABLE que especifican un espacio de tabla no UTS (incluidos los espacios de tabla segmentados multitabla existentes) devuelven un error. Sin embargo, puede utilizar un nivel de compatibilidad de aplicación inferior para crear espacios de tabla de los tipos obsoletos si es necesario, como en situaciones de recuperación. Para obtener instrucciones, consulte Creación de espacios de tabla noUTS (obsoletos).fin del cambio
Creación de una tabla con columnas de datos gráficos y mixtos
Inicio del cambioNo se puede crear una tabla ASCII o EBCDIC con una columna GRAPHIC, VARGRAPHIC o DBCLOB o una columna CHAR, VARCHAR o CLOB definida como PARA DATOS MIXTOS cuando la configuración de la opción de instalación DATOS MIXTOS es NO, a menos que la tabla sea EBCDIC y las columnas sean Unicode.fin del cambio
Creación de una tabla con columnas de tipo distinto basadas en columnas LOB, ROWID y DECFLOAT
Dado que un tipo distinto está sujeto a las mismas restricciones que su tipo de origen, todas las reglas sintácticas que se aplican a las columnas LOB (CLOB, DBCLOB y BLOB), a las columnas ROWID y a las columnas DECFLOAT se aplican a las columnas de tipo distinto que se basan en LOB, ID de fila y DECFLOAT. Por ejemplo, una tabla no puede tener tanto una columna ROWID definida explícitamente como una columna con un tipo distinto que se base en un ID de fila.
Tablas con columnas LOB en línea
Inicio del cambioSi se supera el tamaño de página para una tabla en un espacio de tabla universal, Db2 vuelve a calcular el tamaño del registro utilizando 0 como longitud en línea para las columnas LOB que no especifican la cláusula INLINE LENGTH. En el recálculo se utiliza un tamaño de registro de 0, incluso si el valor del parámetro del subsistema LOB_INLINE_LENGTH es mayor que 0. Después del recálculo, si el tamaño de la página sigue excedido, la instrucción CREATE TABLE devuelve un error.

No puede crear una tabla con una columna LOB en línea en un espacio de tabla que tenga formato de fila básico.

fin del cambio
Creación de una tabla con columnas LOB
Una tabla con una columna LOB (CLOB, DBCLOB o BLOB) también debe tener una columna ROWID, una o más tablas auxiliares e índices en las tablas auxiliares. En muchas situaciones, Db2 puede crear implícitamente los objetos necesarios para usted. Para obtener más información, consulte las columnas ROWID para tablas con columnas LOB y Tablas auxiliares e índices para columnas LOB.
Columnas ROWID para tablas con columnas LOB

Inicio del cambioCuando crea la tabla sin definir explícitamente una columna ROWID, Db2 genera implícitamente una columna ROWID para usted.fin del cambio Esta columna se denomina columna ROWID implícitamente oculta. La columna ROWID, implícitamente oculta, tiene los siguientes atributos:

  • Db2 crea la columna con un nombre de DB2_GENERATED_ROWID_FOR_LOBSnn.

    Db2 añade nn solo si el nombre de la columna ya existe en la tabla, reemplazando nn por 00 e incrementando en 1 hasta que el nombre sea único dentro de la fila.

  • Define la columna como GENERADA SIEMPRE.
  • Añade la columna ROWID implícitamente oculta al final de la fila después de todas las demás columnas explícitamente definidas.

Por ejemplo, supongamos que Db2 generó una columna ROWID implícitamente oculta llamada DB2_GENERATED_ROWID_FOR_LOBS para la tabla MYTABLE. La tabla de resultados de una instrucción SELECT * para la tabla MYTABLE no contendría esa columna ROWID. Sin embargo, la tabla de resultados para SELECT COL1, DB2_GENERATED_ROWID_FOR_LOBS incluiría la columna ROWID implícitamente oculta.

Si el parámetro del subsistema MIXED DATA está establecido en YES y se especifica una constante hexadecimal en minúsculas o en mayúsculas como valor predeterminado para una columna LOB, la instrucción CREATE TABLE devuelve un error.

Tablas auxiliares e índices para columnas LOB

La definición de una tabla que contiene una columna LOB se marca como incompleta hasta que se crea una tabla auxiliar en un espacio de tabla LOB para cada columna LOB de la tabla base y se crea un índice en cada tabla auxiliar. La tabla auxiliar almacena los valores reales de una columna LOB. Para cada columna LOB en un espacio de tabla particionado, se debe definir una tabla auxiliar y un índice relacionado para cada partición del espacio de tabla base.

Db2 a veces crea implícitamente el espacio de tabla LOB, la tabla auxiliar y el índice en la tabla auxiliar para cada columna LOB en una tabla o partición. Para obtener más información, consulte Creación implícita de espacio de tabla LOB.

Si Db2 no crea implícitamente los espacios de tabla LOB, las tablas auxiliares y los índices en las tablas auxiliares, debe crear estos objetos emitiendo instrucciones CREATE TABLESPACE, CREATE AUXILIARY TABLE y CREATE INDEX. Para obtener más información, consulte Creación explícita de espacios de tablas LOB, tablas auxiliares e índices auxiliares.

Crear una tabla con una columna XML
Inicio del cambioFL 500Si la tabla tiene columnas XML, el espacio de tabla XML subyacente se crea implícitamente con el mismo atributo PAGENUM que el espacio de tabla base. El DSSIZE se hereda del espacio de tabla base para una tabla base en el espacio de tabla de partición por crecimiento (PBG).
La siguiente tabla muestra el DSSIZE para un espacio de tabla XML creado implícitamente para una tabla base en un espacio de tabla particionado por rango (PBR) o particionado por rango (no UTS). Para espacios de tabla de partición por rango (PBR) con numeración de página relativa, Db2 también redondea el tamaño de la partición (DSSIZE) a la potencia de dos más cercana antes de utilizar la siguiente tabla.
Tabla 4. DSSIZE predeterminado para espacios de tabla XML, dado el DSSIZE del espacio de tabla base y el tamaño de página del búfer
Espacio de la mesa base DSSIZE 4KB tamaño de página base 8KB tamaño de página base 16KB tamaño de página base 32KB tamaño de página base
1-4 GB 4G B 4 GB 4 GB 4 GB
5-8 GB 32 GB 16 GB 16 GB 16 GB
9-16 GB 64 GB 32 GB 16 GB 16 GB
17-32 GB 64 GB 64 GB 32 GB 16 GB
33-64 GB 64 GB 64 GB 64 GB 32 GB
65-128 GB 256 GB 256 GB 128 GB 64 GB
129-256 GB 256 GB 256 GB 256 GB 128 GB
257-512 GB 512 GB 512 GB 512 GB 256 GB
513-1024 GB 1024 GB 1024 GB 1024 GB 512 GB

Para más información, consulte Creación implícita de espacio de tabla XML.

fin del cambio
Convención de nomenclatura para objetos XML creados implícitamente
Los nombres de espacios de tablas XML creados implícitamente serán Xyyynnnn, donde yyy se deriva de los tres primeros bytes del nombre de la tabla base (si el nombre es más corto que 3, yyy se rellena con X). nnnn es una cadena numérica que comenzará en 0000 y se incrementará en 1 hasta que se encuentre un número único.

Los nombres de tablas XML creados implícitamente serán Xyyyyyyyyyyyyyyyyyynnn, donde yyyyyyyyyyyyyyyyyy son los primeros 18 bytes e UTF-8 es del nombre de la tabla base o del nombre completo si es inferior a 18. nnn solo se añadirá si el nombre ya existe en la tabla. Si el nombre ya existe, nnn se sustituirá por 000 y se incrementará en 1 hasta que el nombre sea único.

Los nombres de índice de ID de documento creados implícitamente serán I_DOCIDyyyyyyyyyyyyyyyyyynnn, donde yyyyyyyyyyyyyyyyyy son los primeros 18 bytes e UTF-8 es del nombre de la tabla base o el nombre completo si es inferior a 18. nnn solo se añadirá si el índice ya existe en la tabla. Si el índice ya existe, nnn se sustituirá por 000 y se incrementará en 1 hasta que el nombre sea único.

Los nombres de índice de ID de nodo creados implícitamente serán I_NODEIDyyyyyyyyyyyyyyyyyynnn, donde yyyyyyyyyyyyyyyyyy son los primeros 18 bytes e UTF-8 es del nombre de la tabla XML o el nombre completo si tiene menos de 18. nnn solo se añadirá si el índice ya existe en la tabla. Si el índice ya existe, nnn se sustituirá por 000 y se incrementará en 1 hasta que el nombre sea único.

Creación de una tabla con una columna de identidad
Cuando una tabla tiene una columna de identidad, Db2 puede generar automáticamente valores numéricos secuenciales para la columna a medida que se insertan filas en la tabla. Por lo tanto, las columnas de identidad son ideales para las claves primarias. Las columnas de identidad y las columnas ROWID son similares en el sentido de que ambos tipos de columnas contienen valores que genera Db2 . Las columnas ROWID se utilizan en espacios de tablas de objetos grandes (LOB) y pueden ser útiles en el acceso directo a filas. Las columnas ROWID contienen valores del tipo de datos ROWID, que devuelve un valor VARCHAR de 40 bytes que no es regularmente ascendente o descendente. Por lo tanto, los valores de datos ROWID no son adecuados para muchos usos de aplicaciones, como la generación de números de empleados o de productos. Para los datos que no son datos LOB y que no requieren acceso directo a filas, las columnas de identidad suelen ser un mejor enfoque, porque las columnas de identidad contienen tipos de datos numéricos existentes y pueden utilizarse en una amplia variedad de usos para los que los valores ROWID no serían adecuados.

Cuando se recupera una tabla a un punto en el tiempo, es posible que se produzca una gran brecha en los valores generados para la columna de identidad. Por ejemplo, supongamos que una tabla tiene una columna de identidad que tiene un valor incremental de 1 y que el último valor generado en el momento T1 fue 100 y Db2 genera posteriormente valores hasta 1000. Ahora, supongamos que el espacio de la tabla se recupera en el tiempo T1. El valor generado de la columna de identidad para la siguiente fila que se inserta después de que se complete la recuperación será 1001, dejando un hueco en el rango 100-1001 en los valores de la columna de identidad.

Si desea asegurarse de que una columna de identidad tiene valores únicos, cree un índice único en la columna.

Crear una tabla con una columna LONG VARCHAR o LONG VARGRAPHIC
Aunque la sintaxis LONG VARCHAR y LONG VARGRAPHIC está permitida por compatibilidad con versiones anteriores de Db2, no se recomienda su uso. VARCHAR (entero ) y VARGRAPHIC(entero) es la sintaxis recomendada, porque después de que se procesa la instrucción CREATE TABLE, Db2 considera que una columna LONG VARCHAR es VARCHAR y una columna LONG VARGRAPHIC es VARGRAPHIC.

Cuando se define una columna utilizando la sintaxis LONG VARCHAR o LONG VARGRAPHIC, Db2 determina el atributo de longitud de la columna. Puede utilizar la siguiente información, que se proporciona para las aplicaciones existentes que requieren el uso de la sintaxis LONG VARCHAR o LONGVARGRAPHIC, para calcular el recuento de bytes y el recuento de caracteres de la columna.

Para calcular el recuento de bytes, utilice esta fórmula:
2*(ENTERO((ENTERO(( mik )/ j ))/2))
Donde:
M
Es el tamaño máximo de fila (8 menos que el tamaño máximo de registro)
I
Es la suma de los recuentos de bytes de todas las columnas de la tabla que no son LONG VARCHAR o LONG VARGRAPHIC
j
es el número de columnas LONG VARCHAR y LONG VARGRAPHIC de la tabla
K
k es el número de columnas LONG VARCHAR y LONG VARGRAPHIC que permiten valores nulos

Para encontrar el recuento de caracteres:

  1. Busque el recuento de bytes.
  2. Restar 2.
  3. Si el tipo de datos es LONG VARGRAPHIC, divida el resultado entre 2. Si el resultado no es un número entero, elimine la parte fraccionaria.
Definición de una tabla temporal de período de sistema
La definición de una tabla temporal sistema-periodo incluye los siguientes atributos:
  • Un período de sistema denominado SYSTEM_TIME que se define mediante una columna de inicio de fila y una columna de fin de fila.
  • Una columna de ID de inicio de transacción.
  • Una definición de versionado de datos del período del sistema que incluye el nombre de la tabla de historial asociada, que se especifica en una instrucción ALTER TABLE posterior.

Para asegurarse de que la tabla histórica no se pueda descartar de forma implícita cuando se descarte una tabla temporal de período del sistema, utilice la cláusula WITH RESTRICT ON DROP en la definición de la tabla histórica.

Para obtener más información, consulte Creación de una tabla temporal de periodos del sistema.

Definición de una tabla temporal de período de aplicación
Una definición de tabla temporal de período de aplicación incluye un período de aplicación denominado BUSINESS_TIME. El período de solicitud se define utilizando una columna de marca de tiempo de inicio y una columna de marca de tiempo de finalización.

Las operaciones de cambio de datos en una tabla temporal de período de aplicación pueden generar una inserción automática de una o dos filas adicionales cuando se actualiza o se suprime una fila. Cuando se especifica una actualización o eliminación de una fila en una tabla temporal de período de aplicación para una parte del período que está representada por esa fila, la fila se actualiza o elimina y se insertan automáticamente una o dos filas para representar la parte de la fila que no se cambia. Se generan nuevos valores para cada columna generada en una tabla temporal de período de aplicación para cada fila que se inserta de forma automática como resultado de una operación de actualización o supresión en la tabla. Si una columna generada se define como parte de una clave única o principal, clave principal en una restricción referencial o índice único, es posible que una inserción automática viole una restricción o índice, en cuyo caso se devuelve un error.

Para obtener más información, consulte Creación de una tabla temporal de períodos de aplicación.

tablas bitemporales
Una tabla que se define para el control de versiones de datos de período de sistema y contiene un período BUSINESS_TIME se denomina tabla bitemporal. Para más información, consulte Creación de tablas bitemporales.
Consideraciones para las columnas de ID de inicio de transacción
Una columna de ID de inicio de transacción contiene un valor nulo si la columna permite valores nulos. Existe una columna de inicio de fila que es única respecto a otros valores de columna de inicio de fila que se generan para otras transacciones con la columna de ID de inicio de transacción. Dado que la columna puede contener valores nulos, considere utilizar uno de los siguientes métodos al recuperar un valor de la columna:
COALESCE ( transaction_start_id_col, row_begin_col)
CASE WHEN transaction_start_id_col IS NOT NULL
	THEN transaction_start_id_col 
		ELSE row_begin_col 
END
Índices creados implícitamente
Cuando se utiliza la cláusula PRIMARY KEY o UNIQUE en la instrucción CREATE TABLE y el procesador de esquemas procesa la instrucción CREATE TABLE o se crea implícitamente el espacio de tablas que contiene la tabla, el procesador de esquemas ( Db2 ) crea implícitamente los índices únicos utilizados para hacer cumplir la unicidad de las claves primarias o únicas.

Cuando una columna ROWID se define como GENERATED BY DEFAULT en la instrucción CREATE TABLE, y la instrucción CREATE TABLE se procesa mediante SET CURRENT RULES = 'STD' o el espacio de tabla que contiene la tabla se crea implícitamente, Db2 crea implícitamente los índices únicos utilizados para hacer cumplir la unicidad de la columna ROWID.

El conjunto de privilegios debe incluir el privilegio USE del grupo de búfer.

Cada índice se crea como si se hubiera emitido la siguiente instrucción CREATE INDEX:
CREATE UNIQUE INDEX xxx ON table-name (column1,...)
Donde:
  • xxx es el nombre del índice que genera Db2 .
  • table-name es el nombre de la tabla especificada en la instrucción CREATE TABLE.
  • (column1,...) es la lista de nombres de columnas que se especificaron en la cláusula UNIQUE o PRIMARY KEY de la instrucción CREATE TABLE, o la columna es una columna ROWID que se define como GENERATED BY DEFAULT.

Para obtener más información sobre el procesador de esquemas, consulte Creación de un esquema mediante el procesador de esquemas.

Además, si se crea implícitamente un espacio de tabla que contiene la tabla, Db2 comprobará el parámetro del subsistema DEFINE DATA SET para determinar si se debe definir el conjunto de datos subyacente para el espacio de índice del índice creado implícitamente en la tabla base.

Si DEFINE DATA SET es NO, el índice se crea como si se emitiera la siguiente instrucción CREATE INDEX:
CREATE UNIQUE INDEX xxx ON table-name (column1,...) DEFINE NO
Tamaño máximo de registro
El tamaño máximo de registro de una tabla depende del tamaño de página del espacio de la tabla y de si se especifica la cláusula EDITPROC, como se muestra en la Tabla 5.

El tamaño de página inicial del espacio de tabla es el tamaño de su búfer, que viene determinado por la cláusula BUFFERPOOL que se especificó explícita o implícitamente cuando se creó el espacio de tabla. Cuando el tamaño del registro alcanza el 90 por ciento del tamaño máximo de registro para el tamaño de página del espacio de tabla, se utiliza automáticamente el siguiente tamaño de página más grande.

Tabla 5. Tamaño máximo de registro, en bytes
 
Tamaño de la página
= 4KB
Tamaño de página
= 8KB
Tamaño de página
= 16KB
Tamaño de página
= 32KB
Tabla sin EDITPROC=YES 4056 8138 16330 32714
Tabla con EDITPROC=YES 4046 8128 16320 32704

El tamaño máximo de registro corresponde a la longitud máxima de una columna VARCHAR si esa columna es la única columna de la tabla.

Si el espacio de tabla que contiene la tabla se crea implícitamente, el tamaño adecuado del búfer se elige de acuerdo con el tamaño real del registro. Si el tamaño del registro alcanza el 90 % del tamaño máximo de registro para el tamaño de página del espacio de tabla, se utilizará el siguiente tamaño de página más grande. La Tabla 6 muestra el 90 % del tamaño máximo de registro:
Tabla 6. 90 % del tamaño máximo de registro, en bytes
 
Tamaño de la página
= 4KB
Tamaño de página
= 8KB
Tamaño de página
= 16KB
Tamaño de página
= 32KB
Tabla sin EDITPROC=YES 3650 7324 14697 29443
Tabla con EDITPROC=YES 3641 7315 14688 29434

Una fila de una tabla con PAGENUM RELATIVE o de un espacio de tabla con PAGENUM RELATIVE debe tener un tamaño de datos mínimo de 3 bytes. Las filas con datos que se compriman a menos de 3 bytes no se comprimirán cuando se almacenen en la tabla.

Recuento de bytes para tipos de datos

La suma de los recuentos de bytes de las columnas no debe exceder el tamaño máximo de fila de la tabla. El tamaño máximo de fila es ocho menos que el tamaño máximo de registro. Para obtener más información, consulte Tamaño máximo de registro.

Para las columnas que no permiten valores nulos, la siguiente tabla muestra el recuento de bytes de las columnas por tipo de datos. Para las columnas que permiten valores nulos, el recuento de bytes es uno más que el que se muestra en la tabla.

Tabla 7. Número total de bytes de las columnas por tipo de datos
Tipo de datos Número de bytes
SMALLINT 2
ENTERO 4
BIGINT 8
FLOTAR (n )

Si n está en el rango de 1 a 21, el recuento de bytes es 4.

Si n está en el rango 22-53, el recuento de bytes es 8.

DECIMAL ENTERO (p/2) + 1, donde p es la precisión
DECFLOAT(16) 9
DECFLOAT(34) 17
CHAR (n) n
VARCHAR (n) n+2
CLOB 6
En línea CLOB 6 + recuento de bytes en línea
GRAPHIC (n) 2 n
VARGRAPHIC (n) 2n+ 2
DBCLOB 6
En línea DBCLOB 6 + (número de caracteres en línea * 2)
BINARIO(n) n
VARBINARIO(n ) n+2
BLOB 6
BLOB en línea 6 + recuento de bytes en línea
FECHA 4
HORA 3
FECHA Y HORA (p ) SIN ZONA HORARIA ENTERO((p+1)/2) + 7 donde p es la precisión
FECHA Y HORA (p ) CON ZONA HORARIA ENTERO((p+1)/2) + 9 donde p es la precisión
ROWID 19
tipo diferenciado La longitud del tipo de datos de origen en el que se basó el tipo distinto
XML

6 - Si la columna no puede contener varias versiones de un documento XML.

14 - Si la columna puede contener varias versiones de un documento XML.

Para obtener más información, consulte Cómo utiliza Tiffany & Co. ( Db2 ) las versiones XML.

Creación de una tabla de consulta materializada
Si el fullselect en la declaración CREATE TABLE contiene un SELECT *, la lista de selección de la subselección se determina en el momento en que se crea la tabla de consulta materializada. Además, cualquier referencia a funciones definidas por el usuario se resuelve al mismo tiempo. El nivel de aislamiento en el momento en que se ejecuta la instrucción CREATE TABLE es el nivel de aislamiento para la tabla de consulta materializada. Después de crear una tabla de consulta materializada, la columna REFRESH_TIME de la fila de la tabla en la tabla de catálogo SYSIBM.SYSVIEWS contiene la marca de tiempo predeterminada.

El propietario de una tabla de consulta materializada tiene todos los privilegios de la tabla con la opción de concesión en la tabla, independientemente de si el propietario tiene los privilegios necesarios en las tablas base, vistas, funciones y secuencias.

No se pueden crear restricciones únicas ni índices únicos para tablas de consulta materializadas. Por lo tanto, una tabla de consulta materializada no puede ser una tabla principal en una restricción referencial.

Cuando cree tablas de consulta materializadas mantenidas por el usuario, debe crear la tabla de consulta materializada con la optimización de consultas desactivada y, a continuación, activar la tabla para la optimización de consultas después de que se haya rellenado. De lo contrario, Db2 podría reescribir las consultas para utilizar la tabla de consulta materializada vacía, y no obtendrá resultados precisos.

Consideraciones para las columnas implícitamente ocultas
Una columna definida como implícitamente oculta no forma parte de la tabla de resultados de una consulta que especifica * en una lista SELECT. Sin embargo, se puede hacer referencia explícita a una columna implícitamente oculta en una consulta. Por ejemplo, se puede hacer referencia a una columna implícitamente oculta en la lista SELECT o en un predicado de una consulta. Además, se puede hacer referencia explícita a una columna implícitamente oculta en una instrucción COMMENT, CREATE INDEX, ALTER TABLE, INSERT, MERGE, UPDATE o RENAME. Se puede hacer referencia a una columna implícitamente oculta en una restricción referencial. Una cláusula REFERENCES que no contenga una lista de columnas se refiere implícitamente a la clave principal de la tabla principal. Es posible que la clave principal de la tabla principal incluya una columna definida como implícitamente oculta. Se permite dicha restricción referencial.

Si la lista SELECT de la fullselect de una definición de consulta materializada se refiere explícitamente a una columna implícitamente oculta, esa columna formará parte de la tabla de consulta materializada.

Si la lista SELECT de la fullselect de una definición de vista (sentencia CREATE VIEW) hace referencia explícita a una columna implícitamente oculta, esa columna formará parte de la vista, aunque la columna de vista no se considere «oculta».

Restricciones en los procedimientos de campo, procedimientos de edición y procedimientos de salida de validación
Los procedimientos de campo, los procedimientos de edición y los procedimientos de salida de validación no se pueden utilizar en tablas cuyos nombres de columna superen los 18 bytes EBCDIC. Si tiene tablas que tienen procedimientos de campo o procedimientos de salida de validación y añade una columna cuyo nombre de columna es mayor de 18 bytes, los procedimientos de campo y los procedimientos de salida de validación de la tabla quedarán invalidados.

Considere la posibilidad de utilizar activadores para reemplazar la funcionalidad en los procedimientos de campo, los procedimientos de edición y los procedimientos de salida de validación en tablas donde los nombres de columna tengan más de 18 bytes EBCDIC.

Restricciones en ciertas sentencias SQL en la misma unidad de trabajo que CREATE TABLE
  • Una instrucción CREATE TABLE que contenga una cláusula PARTITION BY no debe ir seguida en la misma unidad de trabajo de instrucciones SQL que cambien datos.
  • Una instrucción CREATE TABLE que contenga una cláusula IN ACCELERATOR debe emitirse en una unidad de trabajo separada de otras instrucciones SQL.
Crear una tabla mientras se ejecuta una utilidad
No puede utilizar CREATE TABLE mientras una utilidad de acceso a memoria intermedia ( Db2 ) tenga control del espacio de tabla especificado implícita o explícitamente por la cláusula IN.
Restricciones relacionadas con cambios de definición pendientes
No se permite una sentencia CREATE TABLE si hay cambios pendientes en la definición del espacio de la tabla, si la sentencia CREATE TABLE especifica una cláusula FOREIGN KEY que hace referencia a una columna para la que hay cambios de definición pendientes, o si la sentencia CREATE TABLE especifica una definición de tabla de consulta materializada que hace referencia a una tabla para la que hay cambios de definición pendientes.
Requisito de etiqueta de llave
Para utilizar una etiqueta de clave para el cifrado, los conjuntos de datos VSAM para los conjuntos de páginas deben estar asociados a una clase de datos SMS que tenga capacidad de formato extendido (EF habilitado).
Inicio del cambioDeterminación de una etiqueta clave para el espacio de la tabla base y los objetos asociadosfin del cambio
Inicio del cambioCuando se especifica una etiqueta de clave a nivel de tabla, Db2 proporciona la etiqueta de clave a DFSMS para cifrar todos los espacios de tabla y espacios de índice asociados a la tabla. Esto incluye el espacio de tabla base, los espacios de tabla auxiliares, los espacios de tabla XML, los espacios de índice y el espacio de tabla clon, independientemente de si el espacio de tabla base o los objetos asociados se crean explícita o implícitamente. Db2 no impone ninguna relación de etiqueta clave entre la tabla base y una tabla de historial o archivo asociada. La etiqueta clave para el archivo y las tablas de historial debe establecerse independientemente de la tabla base. Si no se especifica ninguna etiqueta de clave a nivel de tabla, Db2 proporcionará la etiqueta de clave a DFSMS especificada para el grupo de almacenamiento.

Cuando Db2 llama a DFSMS para asignar el conjunto de datos para el espacio de tabla o el espacio de índice, DFSMS utiliza su orden de precedencia para determinar la etiqueta de clave y puede anular la etiqueta de clave especificada por Db2.

DFSMS orden de prioridad:
  • RACF perfil del conjunto de datos
  • JCL, asignación dinámica, TSO ALLOCATE
  • Construcción de clase de datos SMS

Si el administrador de seguridad ha especificado una etiqueta de clave para el perfil de conjunto de datos de RACF, esa etiqueta de clave tiene prioridad sobre la etiqueta de clave proporcionada por Db2 . La utilidad REPORT se puede ejecutar para determinar la etiqueta de clave utilizada para el cifrado.

fin del cambio
Inicio del cambioDescripción de la etiqueta clave vigente en DB2fin del cambio
Inicio del cambio
Tabla 8. Ejemplos de escenarios para un espacio de tabla de partición por crecimiento, que describen la etiqueta de clave en vigor en DB2. Esta es la etiqueta clave proporcionada a DFSMS durante la asignación del conjunto de datos para los espacios de tabla y los espacios de índice.
Escenarios Valor de la etiqueta de clave de catálogo Etiqueta de clave proporcionada a DFSMS durante la asignación del conjunto de datos
Crear grupo de almacenamiento, SG01 con etiqueta de clave, SGKL01. Registro SYSSTOGROUP - ETIQUETA CLAVE: SGKL01  
Crear espacio de tabla, TBSP01 utilizando grupo de almacenamiento, SG01 – Crea partición 1   SGKL01
Crear tabla, TB01 en espacio de tabla, TBSP01 con etiqueta de clave, TBKL01 Registro SYSTABLESPACE para TBSP01 / Registro SYSTABLES para TBKL01 - ETIQUETA CLAVE: TBKL01  
REORG TABLESPACE TBSP01 - Reorgs Partición 1   TBKL01
Crear índice, IX01 en tabla, TB01 crea espacio de índice Registro SYSINDEXES para IX01 - ETIQUETA CLAVE: TBKL01 TBKL01
Insertar datos en TB01 - Crea partición 2   TBKL01
Modificar tabla, TB01 para especificar NO KEY LABEL Registro SYSTABLESPACE para TBSP01 / Registro SYSTABLES para TBKL01 / Registro SYSINDEXES para IX01 - ETIQUETA CLAVE: Cadena vacía  
Insertar datos en TB01 - Crea la partición 3   SGKL01
REORG TABLESPACE TBSP01 con opción REUSE: restablece y reutiliza conjuntos de datos de DB2-managed. Sin cambios en la etiqueta de la llave    
fin del cambio
Consideraciones clave sobre la etiqueta

Si se elimina la última tabla de un espacio de tabla segmentado, el espacio de tabla y su conjunto de datos subyacente permanecerán. Si la etiqueta de clave está en vigor, la columna KEYLABEL del registro SYSTABLESPACE del espacio de tabla se borrará. Si se crea una nueva tabla en este espacio de tabla, se cifrará con la etiqueta de clave anterior. Si la tabla tiene que crearse sin cifrar, ejecute la utilidad REORG TABLESPACE para el espacio de tabla.

Si se crea explícitamente un espacio de tabla con la opción DEFINE YES y se define una tabla con una etiqueta de clave en ese espacio de tabla, los conjuntos de datos asociados con el espacio de tabla no se cifrarán. Es necesario un REORG posterior para cifrar los conjuntos de datos. Los usuarios que deseen un cifrado inmediato de los conjuntos de datos asociados al espacio de tabla deben definir los espacios de tabla con la opción DEFINE NO.

Sintaxis y descripciones de la organización hash Inicio del cambio(obsoleto)fin del cambio
Función obsoleta: FL 504 Las tablas organizadas por hash están en desuso. A partir de la versión Db2 12, los paquetes vinculados con APPLCOMPAT( V12R1M504 ) o superior no pueden crear tablas organizadas por hash ni modificar tablas existentes para utilizar la organización por hash. Las tablas organizadas hash existentes siguen siendo compatibles, pero es probable que dejen de serlo en el futuro.
cláusula de organización

cláusula de organización

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual ORGANIZE BY HASH UNIQUE ( ,nombre-columna ) HASH SPACE64MHASH SPACEenteroKMG
ORGANIZE BY HASH
Especifica que se debe utilizar un hash para la organización de datos de la tabla.

Si se especifica PARTITION BY RANGE y la cláusula IN especifica un espacio de tabla, el espacio de tabla debe ser una partición por espacio de tabla universal de rango y no puede ser un espacio de tabla con PAGENUM RELATIVE.

Si no se especifica PARTITION BY RANGE y se especifica una cláusula IN, la cláusula IN debe identificar un espacio de tabla de partición por crecimiento.

ORGANIZE BY HASH no debe especificarse si la tabla se define con APPEND YES.

ORGANIZE BY HASH no debe especificarse si la tabla está utilizando el formato de fila básico.

Si se especifica IN ACCELERATOR, no se debe especificar ORGANIZE BY HASH.

UNIQUE
Especifica que Db2 impone la exclusividad de las columnas de clave hash, evitando que la tabla contenga dos o más filas con el mismo valor de la clave hash.
(nombre-columna,...)
La lista de nombres de columna define la clave hash que se utiliza para determinar dónde se colocará una fila. Cada nombre-columna debe ser un nombre no calificado que identifique una columna de la tabla. La misma columna no debe especificarse más de una vez y las columnas especificadas deben definirse como NOT NULL. El número de columnas especificadas no debe exceder de 64 y la suma de sus atributos de longitud no debe exceder de 255. Una columna especificada no puede ser de ninguno de los tipos siguientes:
  • una columna LOB
  • una columna DECFLOAT
  • una columna XML
  • una columna de tipo diferenciado que se base en uno de los tipos de datos anteriores

Inicio del cambioTodas las columnas de caracteres y de serie gráfica de la clave deben utilizar el mismo esquema de codificación.fin del cambio

Si también se especifica PARTITION BY RANGE, la lista de nombres de columna debe especificar todos los nombres de columna que se han especificado en expresión-partición para la tabla y debe especificar los nombres de columna en el mismo orden que expresión-partición. Si la cláusula ORGANIZE BY contiene más columnas que expresión-partición, expresión-partición determina el número de partición.

HASH SPACE enteroK |M |G
Especifica la cantidad de espacio hash fijo que debe asignarse previamente para la tabla. Si la tabla está particionada por rango, este es el espacio para cada partición.

El valor predeterminado es 64M para una tabla en un espacio de tabla de partición por crecimiento o 64M para cada partición de un espacio de tabla de partición por rango.

K
Indica que el valor entero se multiplica por 1024 para especificar el tamaño del espacio hash en bytes. El valor entero debe estar en el rango de 256 a 268 435 456.
M
Indica que el valor entero se multiplica por 1 048 576 para especificar el tamaño del espacio hash en bytes. El valor entero debe estar en el rango de 1 a 262 144.
G
Indica que el valor entero debe multiplicarse por 1 073 741 824 para especificar el tamaño del espacio hash en bytes. El valor entero debe estar en el rango de 1 a 256 para una tabla de partición por rango y debe estar en el rango de 1 a 131 072 para una tabla no particionada.
Si se especifica un valor mayor que 4G, los conjuntos de datos para el espacio de tabla se asocian con una clase de datos DFSMS que se ha especificado con formato ampliado y direccionabilidad ampliada.
partición-hash-space

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual HASH SPACE entero KMG
HASH SPACE enteroK |M |G
Especifica la cantidad de espacio hash fijo que debe asignarse previamente para la partición que está asociada con elemento de partición. Si se omite HASH SPACE del elemento de partición, el HASH SPACE valor de la ORGANIZE BY se utiliza el valor de la cláusula Si IN ACCELERATOR se especifica, HASH SPACE no debe especificarse.

Si HASH SPACE no se especifica, cada partición utilizará el HASH SPACE valor especificado en la cláusula organization.

La HASH SPACE clave en el elemento de partición solo debe especificarse si también se especifica la cláusula de organización.

K
Indica que el valor entero se multiplica por 1024 para especificar el tamaño del espacio hash en bytes. El valor entero debe estar en el rango de 256 a 268 435 456.
M
Indica que el valor entero se multiplica por 1 048 576 para especificar el tamaño del espacio hash en bytes. El valor entero debe estar en el rango de 1 a 262 144.
G
Indica que el valor entero debe multiplicarse por 1 073 741 824 para especificar el tamaño del espacio hash en bytes. El valor entero debe estar en el rango de 1 a 256 para una tabla de partición por rango y debe estar en el rango de 1 a 131 072 para una tabla no particionada.
Si se especifica un valor mayor que 4G, los conjuntos de datos para el espacio de tabla se asocian con una clase de datos DFSMS que se ha especificado con formato ampliado y direccionabilidad ampliada.
Notas para la organización hash Inicio del cambio(obsoleto)fin del cambio
Función obsoleta: FL 504 Las tablas organizadas por hash están en desuso. A partir de la versión Db2 12, los paquetes vinculados con APPLCOMPAT( V12R1M504 ) o superior no pueden crear tablas organizadas por hash ni modificar tablas existentes para utilizar la organización por hash. Las tablas organizadas hash existentes siguen siendo compatibles, pero es probable que dejen de serlo en el futuro.
Si la cláusula IN no se especifica con ORGANIZE BY HASH
Si no especifica IN DATABASE (de forma explícita o de forma predeterminada), Db2 utilizará el DSSSIZE predeterminado de 4G para cada partición para un espacio de tabla de partición por rango o utilizará el valor especificado en la cláusula de particionamiento. El valor de espacio hash especificado en CREATE TABLE se validará, por partes, para garantizar que el DSSIZE especificado es adecuado. Si el DSSIZE no es adecuado, se devolverá un error.

Si el número máximo de particiones necesarias para el espacio hash especificado es superior al número máximo de particiones permitidas, Db2 devolverá un error.

Si la agrupación de almacenamiento intermedio seleccionada no está disponible, se devolverá un error.

Creación de una tabla con organización hash y columnas LOB
Si el espacio de tabla es un espacio de tabla de partición por crecimiento, Db2 asignará previamente tantas particiones como sea necesario en función del valor especificado para HASH SPACE. Si Db2 necesita crear implícitamente el objeto LOB en una nueva partición, el conjunto de privilegios para los objetos LOB creados implícitamente debe incluir el privilegio USE en la agrupación de almacenamiento intermedio para el espacio de tabla LOB.
Espacio de hash y tamaño de la página de Db2
Si el espacio hash especificado es menor o igual a 64 MB (el valor predeterminado de Db2), Db2 añadirá espacio adicional para las páginas del sistema Db2. Si el espacio hash especificado es superior a 64 MB, Db2 utilizará parte del espacio hash para las páginas del sistema Db2. La cantidad de espacio necesario para las páginas del sistema Db2 depende de SEGSIZE y PAGESIZE. Cuanto mayor sea el TAMAÑO DE LA SECCIÓN y/o el TAMAÑO DE LA PÁGINA, mayor será la necesidad de páginas del sistema de Db2 . Db2 puede reservar hasta 5 MB para páginas del sistema para el valor más alto de SEGSIZE (64) y PAGESIZE ( 32K ).
Espacio de hash y DSSIZE
En función de determinadas características de espacio de tabla, Db2 necesita reservar espacio para el área de desbordamiento hash. Por lo tanto, la cantidad de espacio hash no puede ser igual al valor de DSSIZE. La cantidad máxima de espacio hash que se puede especificar es aproximadamente un 20 % menor que el valor DSSIZE. Db2 devuelve un error si la cantidad de espacio hash es demasiado grande. Si la cantidad de espacio hash es demasiado grande, especifique un valor mayor de DSSIZE o reduzca la cantidad de espacio hash.
Especificar APPEND para tablas organizadas por hash
El proceso de adición no es aplicable a las tablas con organización hash ya que no hay ninguna agrupación en clúster de claves en la organización hash. Para las operaciones de inserción en tablas con organización hash, Db2 utilizará el algoritmo hash interno para determinar la ubicación de la fila.
Tamaño máximo de registro para tablas organizadas por hash
Para tablas organizadas en hash, el tamaño máximo de registro si se especifica la cláusula EDITPROC, como se muestra en la Tabla 9.

El tamaño de página inicial del espacio de tabla es el tamaño de su búfer, que viene determinado por la cláusula BUFFERPOOL que se especificó explícita o implícitamente cuando se creó el espacio de tabla. Cuando el tamaño del registro alcanza el 90 por ciento del tamaño máximo de registro para el tamaño de página del espacio de tabla, se utiliza automáticamente el siguiente tamaño de página más grande.

Tabla 9. Tamaño máximo de registro, en bytes para tablas organizadas por hash
 
Tamaño de la página
= 4KB
Tamaño de página
= 8KB
Tamaño de página
= 16KB
Tamaño de página
= 32KB
Tabla hash (página de inicio de hash) 3817 7899 16091 32475
Tabla hash con EDITPROC=YES (página de inicio hash) 3807 7889 16081 32465

El tamaño máximo de registro corresponde a la longitud máxima de una columna VARCHAR si esa columna es la única columna de la tabla.

Si el espacio de tabla que contiene la tabla se crea implícitamente, el tamaño adecuado del búfer se elige de acuerdo con el tamaño real del registro.

La fila FL 500A en una tabla con PAGENUM RELATIVE o en un espacio de tabla con PAGENUM RELATIVE debe tener un tamaño de datos mínimo de 3 bytes. Las filas con datos que se compriman a menos de 3 bytes no se comprimirán cuando se almacenen en la tabla.

Restricciones para tablas con organización hash
Las tablas que utilizan la organización hash están sujetas a las siguientes restricciones:
  • Una tabla definida para que utilice la organización hash no se puede crear en un espacio de tabla LOB o en un espacio de tabla XML.
  • ORGANIZE BY HASH no debe especificarse si el espacio de tablas se define con la cláusula MEMBER CLUSTER.
  • La cláusula MAXROWS solo es aplicable al área de desbordamiento hash del espacio de tabla para tablas con organización hash. El área de hash fija de cada página contendrá tantas filas como pueda contener, hasta un máximo de 255.
  • La cláusula ORGANIZE BY HASH UNIQUE (lista de columnas) es necesaria cuando se especifica HASH SPACE entero K|M|G en elemento de partición. La cláusula de organización se aplica a toda la tabla y la cláusula elemento de partición se aplica a nivel de partición.
  • Db2 crea automáticamente un índice de desbordamiento hash cuando se crea una tabla con la organización hash.
Sintaxis alternativa y sinónimos
Para proporcionar compatibilidad con versiones anteriores de Db2 u otros productos de la familia Db2 , Db2 es compatible con las siguientes cláusulas:
  • NOCACHE (cláusula única) como sinónimo de NO CACHE
  • NOCYCLE (cláusula única) como sinónimo de NO CYCLE
  • NOMINVALUE (cláusula única) como sinónimo de NO MINVALUE
  • NOMAXVALUE (cláusula única) como sinónimo de NO MAXVALUE
  • NOORDER (cláusula única) como sinónimo de NO ORDER
  • Los VALORES enteros de PART se pueden especificar como alternativa a PARTITION integer ENDING AT.
  • VALORES como sinónimo de TERMINAR EN
  • DEFINICIÓN ÚNICAMENTE como sinónimo de SIN DATOS
  • RESUMEN entre CREATE y TABLE
  • Se puede especificar ZONA HORARIA como alternativa a ZONA HORARIA.

Ejemplos de CREATE TABLE

Ejemplo 1
Cree una tabla denominada DSN8C10. DEPT en el espacio de tabla DSN8S12D de la base de datos DSN8D12A. Nombre las cinco columnas DEPTNO, DEPTNAME, MGRNO, ADMRDEPT y LOCATION, permitiendo que solo MGRNO y LOCATION contengan valores nulos, y designando DEPTNO como la única columna en la clave principal. Las cinco columnas contienen datos de cadenas de caracteres. Suponiendo un valor de NO para el campo MIXED DATA en el panel de instalación DSNTIPF, las cinco columnas tienen el subtipo SBCS.
   CREATE TABLE DSN8C10.DEPT
     (DEPTNO   CHAR(3)     NOT NULL,
      DEPTNAME VARCHAR(36) NOT NULL,
      MGRNO    CHAR(6)             ,
      ADMRDEPT CHAR(3)     NOT NULL,
      LOCATION CHAR(16)            ,
      PRIMARY KEY(DEPTNO)          )
     IN DSN8D12A.DSN8S12D;
Ejemplo 2
Cree una tabla denominada DSN8C10. PROJ en un espacio de tabla creado implícitamente de la base de datos DSN8D12A. Asigne a la tabla un procedimiento de validación llamado « DSN8EAPR ».
   CREATE TABLE DSN8C10.PROJ
     (PROJNO   CHAR(6)      NOT NULL,
      PROJNAME VARCHAR(24)  NOT NULL,
      DEPTNO   CHAR(3)      NOT NULL,
      RESPEMP  CHAR(6)      NOT NULL,
      PRSTAFF  DECIMAL(5,2)         ,
      PRSTDATE DATE                 ,
      PRENDATE DATE                 ,
      MAJPROJ  CHAR(6)      NOT NULL)
     IN DATABASE DSN8D12A
     VALIDPROC DSN8EAPR;
Ejemplo 3
Supongamos que la tabla PROJECT tiene una clave única no primaria que consta de las columnas DEPTNO y RESPEMP (el número de departamento y el empleado responsable de un proyecto). Cree una tabla de actividades de proyecto llamada ACTIVITY con una clave externa en esa clave única.
   CREATE TABLE ACTIVITY
     (PROJNO   CHAR(6)      NOT NULL,
      ACTNO    SMALLINT     NOT NULL,
      ACTDEPT  CHAR(3)      NOT NULL,
      ACTOWNER CHAR(6)      NOT NULL,
      ACSTAFF  DECIMAL(5,2)         ,
      ACSTDATE DATE         NOT NULL,
      ACENDATE DATE                 ,
      FOREIGN KEY (ACTDEPT,ACTOWNER)
         REFERENCES PROJECT (DEPTNO,RESPEMP) ON DELETE RESTRICT)
     IN DSN8D12A.DSN8S12D;
Ejemplo 4
Cree una tabla de currículum y foto de empleado EMP_PHOTO_RESUME que complemente la tabla de muestra de empleado. La tabla contiene una foto y un currículum de cada empleado. Coloque la tabla en el espacio de tabla DSN8D12A. DSN8S12E. Dejar que Db2 genere siempre los valores de la columna ROWID.
   CREATE TABLE DSN8C10.EMP_PHOTO_RESUME
     (EMPNO      CHAR(6)     NOT NULL,
      EMP_ROWID  ROWID NOT NULL GENERATED ALWAYS,
      EMP_PHOTO  BLOB(110K),
      RESUME     CLOB(5K),
      PRIMARY KEY (EMPNO))
     IN DSN8D12A.DSN8S12E
     CCSID EBCDIC;
Ejemplo 5
Cree una tabla EMPLOYEE con una columna de identidad llamada EMPNO. Defina la columna de identidad para que Db2 siempre genere los valores de la columna. Utilice el valor predeterminado, que es 1, para el primer valor que debe asignarse y para la diferencia incremental entre los números consecutivos generados posteriormente.
   CREATE TABLE EMPLOYEE
     (EMPNO      INTEGER GENERATED ALWAYS AS IDENTITY,
      ID         SMALLINT,
      NAME       CHAR(30),
      SALARY     DECIMAL(5,2),
      DEPTNO     SMALLINT)
     IN DSN8D12A.DSN8S12D;
Ejemplo 6
Supongamos que una gran tabla de transacciones llamada TRANS contiene una fila para cada transacción procesada por una empresa. La tabla se define con muchas columnas. Crear una tabla de consulta materializada para la tabla TRANS que contenga datos resumidos diarios para la fecha y el importe de una transacción.
   CREATE TABLE STRANS AS
     (SELECT YEAR AS SYEAR, MONTH AS SMONTH, DAY AS SDAY, SUM(AMOUNT) AS SSUM
      FROM TRANS
      GROUP BY YEAR, MONTH, DAY)
      DATA INITIALLY DEFERRED REFRESH DEFERRED;
     
Ejemplo 7
El siguiente ejemplo crea una tabla en un espacio de tabla de partición por crecimiento e incluye la opción APPEND:
  CREATE TABLE TS01TB
       (C1 SMALLINT,
        C2 DECIMAL(9,2),
        C3 CHAR(4))
    APPEND YES
    IN TS01DB.TS01TS;
Ejemplo 8
El siguiente ejemplo crea una tabla en un espacio de tabla de partición por crecimiento donde el espacio de tabla se crea implícitamente:
  CREATE TABLE TS02TB
       (C1 SMALLINT,
        C2 DECIMAL(9,2),
        C3 CHAR(4))
     PARTITION BY SIZE EVERY 4G
     IN DATABASE DSNDB04;
Ejemplo 9
Cree una tabla, EMP_INFO, que contiene un número de teléfono y una dirección para cada empleado. Incluya una columna de marca de tiempo de cambio de fila en la tabla para realizar un seguimiento de la modificación de la información de los empleados:
  CREATE TABLE EMP_INFO
       (EMPNO CHAR(6) NOT NULL,
        EMP_INFOCHANGE NOT NULL
           GENERATED ALWAYS FOR EACH ROW ON UPDATE
           AS ROW CHANGE TIMESTAMP,
        EMP_ADDRESS VARCHAR(300),
        EMP_PHONENO CHAR(4),
        PRIMARY KEY (EMPNO));
Ejemplo 10
Cree una tabla, TB01, que utilice un esquema de partición de rango con un tamaño de segmento de 4 y 4 particiones.
CREATE TABLE TB01 (                     
   ACCT_NUM         INTEGER,            
   CUST_LAST_NM     CHAR(15),           
   LAST_ACTIVITY_DT VARCHAR(25),        
   COL2             CHAR(10),           
   COL3             CHAR(25),           
   COL4             CHAR(25),           
   COL5             CHAR(25),           
   COL6             CHAR(55),           
   STATE            CHAR(55))           
 IN DBB.TS01                            
                                        
  PARTITION BY (ACCT_NUM)               
   (PARTITION 1 ENDING AT (199),        
    PARTITION 2 ENDING AT (299),        
    PARTITION 3 ENDING AT (399),        
    PARTITION 4 ENDING AT (MAXVALUE));
Ejemplo 11
Cree una tabla, policy_info, que utilice un período SYSTEM_TIME y cree una tabla de historial, hist_policy_info. A continuación, emita una instrucción ALTER TABLE para asociar la tabla policy_info con la tabla hist_policy_info.
CREATE TABLE policy_info
    (policy_id CHAR(10) NOT NULL,
     coverage INT NOT NULL,
     sys_start TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN,
     sys_end TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END,
     create_id TIMESTAMP(12) GENERATED ALWAYS AS TRANSACTION START ID,
     PERIOD SYSTEM_TIME(sys_start,sys_end));
CREATE TABLE hist_policy_info
    (policy_id CHAR(10) NOT NULL,
     coverage INT NOT NULL,
     sys_start TIMESTAMP(12) NOT NULL,
     sys_end TIMESTAMP(12) NOT NULL,
     create_id TIMESTAMP(12));
ALTER TABLE policy_info
	ADD VERSIONING USE HISTORY TABLE hist_policy_info;
Ejemplo 12
Cree una tabla, policy_info, que utilice un periodo BUSINESS_TIME.
CREATE TABLE policy_info
	(policy_id CHAR(4) NOT NULL,
	 coverage INT NOT NULL,
	 bus_start DATE NOT NULL,
	 bus_end DATE NOT NULL,
	 PERIOD BUSINESS_TIME(bus_start, bus_end));
Ejemplo 13
Cree una tabla, policy_info, que utilice tanto un período SYSTEM_TIME como un período BUSINESS_TIME para mantener filas históricas y realizar un seguimiento de un período de tiempo especificado por el usuario. Una tabla que especifica tanto un período SYSTEM_TIME como un período BUSINESS_TIME se denomina a veces tabla bitemporal. Para habilitar la retención de filas históricas, también es necesario crear una tabla de historial, hist_policy_info, y asociarla (mediante la instrucción ALTER TABLE) con la tabla policy_info.
CREATE TABLE policy_info
	(policy_id CHAR(4) NOT NULL,
	coverage INT NOT NULL,
	bus_start DATE NOT NULL,
	bus_end DATE NOT NULL,
	sys_start TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN,
	sys_end TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END,
	create_id TIMESTAMP(12) GENERATED ALWAYS AS TRANSACTION START ID,
	PERIOD BUSINESS_TIME(bus_start, bus_end),
	PERIOD SYSTEM_TIME(sys_start, sys_end));
CREATE TABLE hist_policy_info
	(policy_id CHAR(4) NOT NULL,
	coverage INT NOT NULL,
	bus_start DATE NOT NULL,
	bus_end DATE NOT NULL,
	sys_start TIMESTAMP(12) NOT NULL,
	sys_end TIMESTAMP(12) NOT NULL),
	create_id TIMESTAMP(12);
ALTER TABLE policy_info
	ADD VERSIONING USE HISTORY TABLE hist_policy_info;
Inicio del cambioEjemplo 14: Crear tabla EMPLOYEE.PERSONAL con etiqueta clave EMPKEYLABEL.
CREATE TABLE EMPLOYEE.PERSONAL
	(DEPTNO CHAR(3) NOT NULL,
	 DEPTNAME VARCHAR(36) NOT NULL,
	 MGRNO CHAR(6) ,
	 ADMRDEPT CHAR(3) NOT NULL,
	 LOCATION CHAR(16) ,
	 PRIMARY KEY(DEPTNO) )
	 IN DSN8D12A.DSN8S12D
	 KEY LABEL EMPKEYLABEL;
fin del cambio
1 Esta restricción se relaja cuando el procesador de esquemas procesa la declaración y la otra tabla se crea dentro del mismo CREATE SCHEMA.