Partilhar via


CREATE TABLE – comando SQL

Cria uma tabela com os campos especificados.

O driver ODBC do Visual FoxPro dá suporte à sintaxe de linguagem nativa do Visual FoxPro para esse comando. Para obter informações específicas do driver, consulte Comentários do driver.

Sintaxe

  
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

CRIAR TABELA | Nome da Tabela DBF1
Especifica o nome da tabela a ser criada. As opções TABLE e DBF são idênticas.

NOME LongTableName
Especifica um nome longo para a tabela. Um nome de tabela longo pode ser especificado somente quando um banco de dados está aberto, pois os nomes de tabela longos são armazenados em bancos de dados.

Os nomes longos podem conter até 128 caracteres e podem ser usados no lugar de nomes de arquivos curtos no banco de dados.

FREE
Especifica que a tabela não será adicionada a um banco de dados aberto. FREE não é necessário se um banco de dados não estiver aberto.

(FieldName1 FieldType [( nFieldWidth [, nPrecision])]
Especifica o nome do campo, o tipo de campo, a largura do campo e a precisão do campo (número de casas decimais), respectivamente.

FieldType é uma única letra que indica o tipo de dados do campo. Alguns tipos de dados de campo exigem que você especifique nFieldWidth ou nPrecision ou ambos.

nFieldWidth e nPrecision são ignorados para os tipos D, G, I, L, M, P, T e Y. O padrão de nPrecision é zero (sem casas decimais) se nPrecision não estiver incluído para os tipos B, F ou N.

NULO
Permite valores nulos no campo.

NOT NULL
Impede valores nulos no campo.

Se você omitir NULL e NOT NULL, a configuração atual de SET NULL determinará se valores nulos são permitidos no campo. No entanto, se você omitir NULL e NOT NULL e incluir a cláusula PRIMARY KEY ou UNIQUE, a configuração atual de SET NULL será ignorada e o campo será padronizado como NOT NULL.

VERIFICAR lExpression1
Especifica uma regra de validação para o campo. lExpression1 pode ser uma função definida pelo usuário. Sempre que um registro em branco é acrescentado, a regra de validação é verificada. Um erro será gerado se a regra de validação não permitir um valor de campo em branco em um registro acrescentado.

ERRO cMessageText1
Especifica a mensagem de erro que o Visual FoxPro exibe quando a regra de campo gera um erro. A mensagem é exibida somente quando os dados são alterados em uma janela Procurar ou em uma janela Editar.

DEFAULT eExpression1
Especifica um valor padrão para o campo. O tipo de dados de eExpression1 deve ser o mesmo que o tipo de dados do campo.

PRIMARY KEY
Cria um índice primário para o campo. A tag de índice primária tem o mesmo nome que o campo.

UNIQUE
Cria um índice candidato para o campo. A tag de índice candidata tem o mesmo nome que o campo.

Observação

Os índices candidatos (criados pela inclusão da opção UNIQUE em CREATE TABLE ou ALTER TABLE - SQL) não são os mesmos que os índices criados com a opção UNIQUE no comando INDEX. Um índice criado com a opção UNIQUE no comando INDEX permite chaves de índice duplicadas; Os índices candidatos não permitem chaves de índice duplicadas. Consulte INDEX para obter informações adicionais sobre sua opção UNIQUE.

Valores nulos e registros duplicados não são permitidos em um campo usado para um índice primário ou candidato. No entanto, o Visual FoxPro não gerará um erro se você criar um índice primário ou candidato para um campo que dê suporte a valores nulos. O Visual FoxPro gerará um erro se você tentar inserir um valor nulo ou duplicado em um campo usado para um índice primário ou candidato.

REFERÊNCIAS TableName2[TAG TagName1]
Especifica a tabela pai com a qual uma relação persistente é estabelecida. Se você omitir TAG TagName1, a relação será estabelecida usando a chave de índice primária da tabela pai. Se a tabela pai não tiver um índice primário, o Visual FoxPro gerará um erro.

Inclua TAG TagName1 para estabelecer uma relação com base em uma marca de índice existente para a tabela pai. Os nomes das tags de índice podem conter até 10 caracteres.

A tabela pai não pode ser uma tabela livre.

NOCPTRANS
Impede a tradução para uma página de código diferente para campos de caracteres e memorandos. Se a tabela for convertida em outra página de código, os campos para os quais NOCPTRANS foi especificado não serão traduzidos. NOCPTRANS pode ser especificado apenas para campos de caracteres e memorandos.

O exemplo a seguir cria uma tabela chamada mytable contendo dois campos de caractere e dois campos de memorando. O segundo campo de caracteres, char2, e o segundo campo de memorando, memo2, incluem NOCPTRANS para evitar a conversão.

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

CHAVE PRIMÁRIA eExpression2 TAG TagName2
Especifica um índice primário a ser criado. eExpression2 especifica qualquer campo ou combinação de campos na tabela. TAG TagName2 especifica o nome da marca de índice primária que é criada. Os nomes das tags de índice podem conter até 10 caracteres.

Como uma tabela pode ter apenas um índice primário, você não poderá incluir essa cláusula se já tiver criado um índice primário para um campo. O Visual FoxPro gerará um erro se você incluir mais de uma cláusula PRIMARY KEY em CREATE TABLE.

UNIQUE eExpression3TAG TagName3
Cria um índice de candidatos. eExpression3 especifica qualquer campo ou combinação de campos na tabela. No entanto, se você tiver criado um índice primário com uma das opções PRIMARY KEY, não poderá incluir o campo especificado para o índice primário. TAG TagName3 especifica um nome de marca para a marca de índice candidata que é criada. Os nomes das tags de índice podem conter até 10 caracteres.

Uma tabela pode ter vários índices candidatos.

CHAVE ESTRANGEIRA eExpression4TAG TagName4[NODUP]
Cria um índice externo (não primário) e estabelece uma relação com uma tabela pai. eExpression4 especifica a expressão de chave de índice estrangeiro e TagName4 especifica o nome da tag de chave de índice estrangeiro criada. Os nomes das tags de índice podem conter até 10 caracteres. Inclua NODUP para criar um índice estrangeiro candidato.

Você pode criar vários índices externos para a tabela, mas as expressões de índice externo devem especificar campos diferentes na tabela.

REFERÊNCIAS TableName3[TAG TagName5]
Especifica a tabela pai com a qual uma relação persistente é estabelecida. Inclua TAG TagName5 para estabelecer uma relação com base em uma tag de índice para a tabela pai. Os nomes das tags de índice podem conter até 10 caracteres. Por padrão, se você omitir TAG TagName5, a relação será estabelecida usando a chave de índice primária da tabela pai.

VERIFICAR eExpression2[ERRO cMessageText2]
Especifica a regra de validação da tabela. ERROR cMessageText2 especifica a mensagem de erro que o Visual FoxPro exibe quando a regra de validação da tabela é executada. A mensagem é exibida somente quando os dados são alterados em uma janela Procurar ou Editar.

FROM ARRAY Nome_da_Matriz
Especifica o nome de uma matriz existente cujo conteúdo é o nome, o tipo, a precisão e a escala de cada campo na tabela. O conteúdo da matriz pode ser definido com a função AFIELDS( ).

Comentários

A nova tabela é aberta na área de trabalho mais baixa disponível e pode ser acessada por seu alias. A nova mesa é aberta exclusivamente, independentemente da configuração atual de SET EXCLUSIVE.

Se um banco de dados estiver aberto e você não incluir a cláusula FREE, a nova tabela será adicionada ao banco de dados. Não é possível criar uma nova tabela com o mesmo nome de uma tabela no banco de dados.

Se um banco de dados estiver aberto, CREATE TABLE - SQL exigirá o uso exclusivo do banco de dados. Para abrir um banco de dados para uso exclusivo, inclua EXCLUSIVE em OPEN DATABASE.

Se um banco de dados não estiver aberto quando você criar a nova tabela, incluindo as cláusulas NAME, CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY ou REFERENCES gerará um erro.

Observação

A sintaxe CREATE TABLE usa vírgulas para separar determinadas opções de CREATE TABLE. Além disso, as cláusulas NULL, NOT NULL, CHECK, DEFAULT, PRIMARY KEY e UNIQUE devem ser colocadas entre parênteses que contêm as definições de coluna.

Comentários do motorista

Quando seu aplicativo envia a instrução SQL ODBC CREATE TABLE para a fonte de dados, o Driver ODBC do Visual FoxPro converte o comando no comando Visual FoxProCREATE TABLE usando a sintaxe mostrada na tabela a seguir.

Sintaxe do ODBC Sintaxe do Visual FoxPro
CREATE TABLE nome-da-tabela-base

(tipo de dados column-identifier

[NÃO NULO]

[,column-identifier tipo de dados

[NÃO NULO] ...)
CREATE TABLE TableName1 [NOME LongTableName]

(FieldName1 FieldType

[(nFieldWidth [, nPrecision])]

[NÃO NULO])

Quando você cria uma tabela usando o driver, o driver fecha a tabela imediatamente após a criação para permitir o acesso à tabela por outros usuários. Isso difere do Visual FoxPro, que deixa a tabela aberta exclusivamente após a criação. No entanto, se um procedimento armazenado em sua fonte de dados contendo uma instrução CREATE TABLE for executado, a tabela será deixada aberta.

Se a fonte de dados for um banco de dados (arquivo .dbc), o Driver ODBC do Visual FoxPro criará uma tabela chamada LongTableName com o mesmo nome que o nome da tabela base.

Usando a linguagem de definição de dados (DDL)

Você não pode incluir DDL nos seguintes locais:

  • Em uma instrução SQL em lote que requer uma transação

  • No modo de confirmação manual, após uma instrução que exigiu uma transação, a menos que seu aplicativo chame primeiro SQLTransact.

Por exemplo, se você quiser criar uma tabela temporária, deverá criar a tabela antes de iniciar a instrução que requer uma transação. Se você incluir a instrução CREATE TABLE em uma instrução SQL em lote que requer uma transação, o driver retornará uma mensagem de erro.

Confira também

ALTER TABLE – comando SQL
Tipos de dados com suporte (Driver ODBC do Visual FoxPro)
INSERT – comando SQL
SELECT – comando SQL