Compartir por


Crear tabla - comando SQL

Crea una tabla con los campos especificados.

Visual FoxPro ODBC Driver admite la sintaxis nativa del lenguaje Visual FoxPro para este comando. Para obtener información específica del controlador, vea Comentarios del controlador.

Sintaxis

  
CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE]  
   (FieldName1FieldType [(nFieldWidth [, nPrecision])]  
      [NULL | NOT NULL]   
      [CHECK lExpression1 [ERROR cMessageText1]]  
      [DEFAULT eExpression1]  
      [PRIMARY KEY | UNIQUE]  
      [REFERENCES TableName2 [TAG TagName1]]  
      [NOCPTRANS]  
   [, FieldName2 ...]  
      [, PRIMARY KEY eExpression2 TAG TagName2  
      |, UNIQUE eExpression3 TAG TagName3]  
      [, FOREIGN KEY eExpression4 TAG TagName4 [NODUP]  
            REFERENCES TableName3 [TAG TagName5]]  
      [, CHECK lExpression2 [ERROR cMessageText2]])  
| FROM ARRAY ArrayName  

Argumentos

CREATE TABLE | DBF TableName1
Especifica el nombre de la tabla que se va a crear. Las opciones TABLE y DBF son idénticas.

NAME LongTableName
Especifica un nombre largo para la tabla. Un nombre de tabla larga solo se puede especificar cuando una base de datos está abierta, ya que los nombres de tabla larga se almacenan en las bases de datos.

Los nombres largos pueden contener hasta 128 caracteres y se pueden usar en lugar de nombres de archivo cortos en la base de datos.

FREE
Especifica que la tabla no se agregará a una base de datos abierta. Free no es necesario si una base de datos no está abierta.

(FieldName1 FieldType [( nFieldWidth [, nPrecision])]
Especifica el nombre del campo, el tipo de campo, el ancho del campo y la precisión del campo (número de posiciones decimales), respectivamente.

FieldType es una sola letra que indica el tipo de datos del campo. Algunos tipos de datos de campo requieren que especifique nFieldWidth o nPrecision o ambos.

nFieldWidth y nPrecision se omiten para los tipos D, G, I, L, M, P, T e Y. nPrecision tiene como valor predeterminado cero (sin posiciones decimales) si nPrecision no se incluye para los tipos B, F o N.

NULL
Permite valores NULL en el campo.

NOT NULL
Impide valores NULL en el campo.

Si omite NULL y NOT NULL, el valor actual de SET NULL determina si se permiten valores NULL en el campo. Sin embargo, si omite NULL y NOT NULL e incluye la cláusula PRIMARY KEY o UNIQUE, se omite la configuración actual de SET NULL y el campo tiene como valor predeterminado NOT NULL.

CHECK lExpression1
Especifica una regla de validación para el campo. lExpression1 puede ser una función definida por el usuario. Cada vez que se anexa un registro en blanco, se comprueba la regla de validación. Se genera un error si la regla de validación no permite un valor de campo en blanco en un registro anexado.

ERROR cMessageText1
Especifica el mensaje de error que Visual FoxPro muestra cuando la regla de campo genera un error. El mensaje solo se muestra cuando se cambian los datos dentro de una ventana Examinar o una ventana Editar.

DEFAULT eExpression1
Especifica un valor predeterminado para el campo. El tipo de datos de eExpression1 debe ser el mismo que el tipo de datos del campo.

PRIMARY KEY
Crea un índice principal para el campo. La etiqueta de índice principal tiene el mismo nombre que el campo.

UNIQUE
Crea un índice candidato para el campo. La etiqueta de índice candidato tiene el mismo nombre que el campo.

Nota

Los índices candidatos (creados mediante la inclusión de la opción UNIQUE en CREATE TABLE o ALTER TABLE - SQL) no son los mismos que los índices creados con la opción UNIQUE en el comando INDEX. Un índice creado con la opción UNIQUE en el comando INDEX permite claves de índice duplicadas; los índices candidatos no permiten claves de índice duplicadas. Consulte INDEX para obtener información adicional sobre su opción UNIQUE.

Los valores NULL y los registros duplicados no se permiten en un campo utilizado para un índice principal o candidato. Sin embargo, Visual FoxPro no generará un error si crea un índice principal o candidato para un campo que admita valores NULL. Visual FoxPro generará un error si intenta especificar un valor nulo o duplicado en un campo usado para un índice principal o candidato.

REFERENCES TableName2[ TAG TagName1]
Especifica la tabla primaria a la que se establece una relación persistente. Si omite TAG TagName1, la relación se establece mediante la clave de índice principal de la tabla primaria. Si la tabla primaria no tiene un índice principal, Visual FoxPro genera un error.

Incluya TAG TagName1 para establecer una relación basada en una etiqueta de índice existente para la tabla primaria. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres.

La tabla primaria no puede ser una tabla libre.

NOCPTRANS
Impide la traducción a otra página de códigos para campos de caracteres y memo. Si la tabla se convierte en otra página de códigos, los campos para los que no se ha especificado NOCPTRANS no se traducen. NOCPTRANS solo se puede especificar para campos de caracteres y memo.

En el ejemplo siguiente se crea una tabla denominada mytable que contiene dos campos de caracteres y dos campos memo. El segundo campo de caracteres, char2 y el segundo campo memo, memo2, incluyen NOCPTRANS para evitar la traducción.

CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;  
   memo1 M, memo2 M NOCPTRANS)  

PRIMARY KEY eExpression2TAG TagName2
Especifica un índice principal que se va a crear. eExpression2 especifica cualquier campo o combinación de campos de la tabla. TAG TagName2 especifica el nombre de la etiqueta de índice principal que se crea. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres.

Dado que una tabla solo puede tener un índice principal, no puede incluir esta cláusula si ya ha creado un índice principal para un campo. Visual FoxPro genera un error si incluye más de una cláusula PRIMARY KEY en CREATE TABLE.

UNIQUE eExpression3TAG TagName3
Crea un índice candidato. eExpression3 especifica cualquier campo o combinación de campos de la tabla. Sin embargo, si ha creado un índice principal con una de las opciones PRIMARY KEY, no puede incluir el campo especificado para el índice principal. TAG TagName3 especifica un nombre de etiqueta para la etiqueta de índice candidata que se crea. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres.

Una tabla puede tener varios índices candidatos.

FOREIGN KEY eExpression4TAG TagName4[NODUP]
Crea un índice externo (no principal) y establece una relación con una tabla primaria. eExpression4 especifica la expresión de clave de índice externo y TagName4 especifica el nombre de la etiqueta de clave de índice externo que se crea. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres. Incluya NODUP para crear un índice externo candidato.

Puede crear varios índices externos para la tabla, pero las expresiones de índice externo deben especificar campos diferentes en la tabla.

REFERENCES TableName3[ TAG TagName5]
Especifica la tabla primaria a la que se establece una relación persistente. Incluya TAG TagName5 para establecer una relación basada en una etiqueta de índice para la tabla primaria. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres. De forma predeterminada, si omite TAG TagName5, la relación se establece mediante la clave de índice principal de la tabla primaria.

CHECK eExpression2[ERROR cMessageText2]
Especifica la regla de validación de tabla. ERROR cMessageText2 especifica el mensaje de error que Visual FoxPro muestra cuando se ejecuta la regla de validación de tabla. El mensaje solo se muestra cuando se cambian los datos dentro de una ventana Examinar o Editar ventana.

FROM ARRAY ArrayName
Especifica el nombre de una matriz existente cuyo contenido es el nombre, el tipo, la precisión y la escala de cada campo de la tabla. El contenido de la matriz se puede definir con la función AFIELDS( ).

Comentarios

La nueva tabla se abre en el área de trabajo más baja disponible y su alias puede acceder a ella. La nueva tabla se abre exclusivamente, independientemente de la configuración actual de SET EXCLUSIVE.

Si una base de datos está abierta y no incluye la cláusula FREE, la nueva tabla se agrega a la base de datos. No se puede crear una nueva tabla con el mismo nombre que una tabla en la base de datos.

Si una base de datos está abierta, CREATE TABLE - SQL requiere un uso exclusivo de la base de datos. Para abrir una base de datos para uso exclusivo, incluya EXCLUSIVE en OPEN DATABASE.

Si una base de datos no está abierta al crear la nueva tabla, incluidas las cláusulas NAME, CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY o REFERENCES genera un error.

Nota

La sintaxis CREATE TABLE usa comas para separar determinadas opciones de CREATE TABLE. Además, la cláusula NULL, NOT NULL, CHECK, DEFAULT, PRIMARY KEY y UNIQUE debe colocarse entre paréntesis que contengan las definiciones de columna.

Comentarios del controlador

Cuando la aplicación envía la instrucción ODBC SQL CREATE TABLE al origen de datos, visual FoxPro ODBC Driver traduce el comando al comando Visual FoxProCREATE TABLE mediante la sintaxis que se muestra en la tabla siguiente.

Sintaxis de ODBC Sintaxis de Visual FoxPro
CREATE TABLE base-table-name

(tipo de datos column-identifier

[NOT NULL]

[,tipo de datos column-identifier

[NOT NULL] ...)
CREATE TABLE TableName1 [NAME LongTableName]

(FieldName1 FieldType

[(nFieldWidth [, nPrecision])]

[NOT NULL])

Cuando se crea una tabla mediante el controlador, el controlador cierra la tabla inmediatamente después de la creación para permitir el acceso a la tabla por parte de otros usuarios. Esto difiere de Visual FoxPro, que deja abierta la tabla exclusivamente durante la creación. Sin embargo, si se ejecuta un procedimiento almacenado en el origen de datos que contiene una instrucción CREATE TABLE, la tabla se deja abierta.

Si el origen de datos es una base de datos (archivo .dbc), el controlador ODBC de Visual FoxPro crea una tabla denominada LongTableName con el mismo nombre que el nombre de tabla base.

Uso del lenguaje de definición de datos (DDL)

No se puede incluir DDL en los siguientes lugares:

  • En una instrucción SQL por lotes que requiere una transacción

  • En el modo de confirmación manual, después de una instrucción que requería una transacción, a menos que la aplicación llame primero a SQLTransact.

Por ejemplo, si desea crear una tabla temporal, debe crear la tabla antes de comenzar la instrucción que requiere una transacción. Si incluye la instrucción CREATE TABLE en una instrucción SQL por lotes que requiere una transacción, el controlador devuelve un mensaje de error.

Consulte también

Modificar tabla - comando SQL
Tipos de datos admitidos (controlador ODBC de Visual FoxPro)
Insertar: comando SQL
Seleccione - comando SQL