Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Crea una tabella con i campi specificati.
Visual FoxPro ODBC Driver supporta la sintassi nativa del linguaggio Visual FoxPro per questo comando. Per informazioni specifiche del driver, vedere Note sul driver.
Sintassi
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
Argomenti
CREATE TABLE | DBF TableName1
Specifica il nome della tabella da creare. Le opzioni TABLE e DBF sono identiche.
NAME LongTableName
Specifica un nome lungo per la tabella. È possibile specificare un nome di tabella lungo solo quando un database è aperto, perché i nomi di tabella lunghi vengono archiviati nei database.
I nomi lunghi possono contenere fino a 128 caratteri e possono essere usati al posto di nomi di file brevi nel database.
GRATUITO
Specifica che la tabella non verrà aggiunta a un database aperto. FREE non è obbligatorio se un database non è aperto.
(FieldName1 FieldType [( nFieldWidth [, nPrecision])]
Specifica il nome del campo, il tipo di campo, la larghezza del campo e la precisione del campo (numero di posizioni decimali), rispettivamente.
FieldType è una singola lettera che indica il tipo di dati del campo. Alcuni tipi di dati di campo richiedono di specificare nFieldWidth o nPrecision o entrambi.
nFieldWidth e nPrecision vengono ignorati per i tipi D, G, I, L, M, P, T e Y. l'impostazione predefinita nPrecision è zero (nessuna posizione decimale) se nPrecision non è incluso per i tipi B, F o N.
NULLO
Consente valori Null nel campo.
NON NULLO
Impedisce i valori Null nel campo.
Se si omette NULL e NOT NULL, l'impostazione corrente di SET NULL determina se nel campo sono consentiti valori Null. Tuttavia, se si omette NULL e NOT NULL e si include la clausola PRIMARY KEY o UNIQUE, l'impostazione corrente di SET NULL viene ignorata e il campo viene impostato su NOT NULL.
CHECK lExpression1
Specifica una regola di convalida per il campo.
lExpression1 può essere una funzione definita dall'utente. Ogni volta che viene aggiunto un record vuoto, viene verificata la regola di convalida. Se la regola di convalida non consente un valore di campo vuoto in un record aggiunto, viene generato un errore.
ERROR cMessageText1
Specifica il messaggio di errore visualizzato da Visual FoxPro quando la regola del campo genera un errore. Il messaggio viene visualizzato solo quando i dati vengono modificati all'interno di una finestra Sfoglia o di una finestra Modifica.
DEFAULT eExpression1
Specifica un valore predefinito per il campo. Il tipo di dati di eExpression1 deve corrispondere al tipo di dati del campo.
CHIAVE PRIMARIA
Crea un indice primario per il campo. Il tag di indice primario ha lo stesso nome del campo.
UNICO
Crea un indice candidato per il campo. Il tag di indice candidato ha lo stesso nome del campo.
Nota
Gli indici candidati (creati includendo l'opzione UNIQUE in CREATE TABLE o ALTER TABLE - SQL) non corrispondono agli indici creati con l'opzione UNIQUE nel comando INDEX. Un indice creato con l'opzione UNIQUE nel comando INDEX consente chiavi di indice duplicate; gli indici candidati non consentono chiavi di indice duplicate. Per altre informazioni sull'opzione UNIQUE, vedere INDEX .
I valori Null e i record duplicati non sono consentiti in un campo utilizzato per un indice primario o candidato. Tuttavia, Visual FoxPro non genererà un errore se si crea un indice primario o candidato per un campo che supporta valori Null. Visual FoxPro genererà un errore se si tenta di immettere un valore Null o duplicato in un campo utilizzato per un indice primario o candidato.
REFERENCES TableName2[TAG TagName1]
Specifica la tabella padre a cui viene stabilita una relazione permanente. Se si omette TAG TagName1, la relazione viene stabilita usando la chiave di indice primaria della tabella padre. Se la tabella padre non dispone di un indice primario, Visual FoxPro genera un errore.
Includere TAG TagName1 per stabilire una relazione basata su un tag di indice esistente per la tabella padre. I nomi dei tag di indice possono contenere fino a 10 caratteri.
La tabella padre non può essere una tabella libera.
NOCPTRANS
Impedisce la conversione in una tabella codici diversa per i campi carattere e memo. Se la tabella viene convertita in un'altra tabella codici, i campi per i quali è stato specificato NOCPTRANS non vengono convertiti. NOCPTRANS può essere specificato solo per i campi carattere e memo.
Nell'esempio seguente viene creata una tabella denominata mytable contenente due campi carattere e due campi memo. Il secondo campo carattere, char2 e il secondo campo memo, memo2, includono NOCPTRANS per impedire la conversione.
CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;
memo1 M, memo2 M NOCPTRANS)
PRIMARY KEY eExpression2 TAG TagName2
Specifica un indice primario da creare.
eExpression2 specifica qualsiasi campo o combinazione di campi nella tabella. TAG TagName2 specifica il nome del tag di indice primario creato. I nomi dei tag di indice possono contenere fino a 10 caratteri.
Poiché una tabella può avere un solo indice primario, non è possibile includere questa clausola se è già stato creato un indice primario per un campo. Visual FoxPro genera un errore se si include più clausole PRIMARY KEY in CREATE TABLE.
UNIQUE eExpression3 TAG TagName3
Crea un indice candidato.
eExpression3 specifica qualsiasi campo o combinazione di campi nella tabella. Tuttavia, se è stato creato un indice primario con una delle opzioni PRIMARY KEY, non è possibile includere il campo specificato per l'indice primario. TAG TagName3 specifica un nome di tag per il tag di indice candidato creato. I nomi dei tag di indice possono contenere fino a 10 caratteri.
Una tabella può avere più indici candidati.
FOREIGN KEY eExpression4 TAG TagName4[NODUP]
Crea un indice esterno (non primario) e stabilisce una relazione con una tabella padre.
eExpression4 specifica l'espressione di chiave dell'indice esterno e TagName4 specifica il nome del tag di chiave di indice esterno creato. I nomi dei tag di indice possono contenere fino a 10 caratteri. Includere NODUP per creare un indice esterno candidato.
È possibile creare più indici stranieri per la tabella, ma le espressioni di indice esterno devono specificare campi diversi nella tabella.
REFERENCES TableName3[TAG TagName5]
Specifica la tabella padre a cui viene stabilita una relazione permanente. Includere TAG TagName5 per stabilire una relazione basata su un tag di indice per la tabella padre. I nomi dei tag di indice possono contenere fino a 10 caratteri. Per impostazione predefinita, se si omette TAG TagName5, la relazione viene stabilita usando la chiave di indice primaria della tabella padre.
CHECK eExpression2[ERROR cMessageText2]
Specifica la regola di convalida della tabella. ERROR cMessageText2 specifica il messaggio di errore visualizzato da Visual FoxPro quando viene eseguita la regola di convalida della tabella. Il messaggio viene visualizzato solo quando i dati vengono modificati all'interno di una finestra Sfoglia o modifica.
FROM ARRAY ArrayName
Specifica il nome di una matrice esistente il cui contenuto è il nome, il tipo, la precisione e la scala per ogni campo della tabella. Il contenuto della matrice può essere definito con la funzione AFIELDS( ).
Osservazioni:
La nuova tabella viene aperta nell'area di lavoro più bassa disponibile ed è accessibile tramite il relativo alias. La nuova tabella viene aperta esclusivamente, indipendentemente dall'impostazione corrente di SET EXCLUSIVE.
Se un database è aperto e non si include la clausola FREE, la nuova tabella viene aggiunta al database. Non è possibile creare una nuova tabella con lo stesso nome di una tabella nel database.
Se un database è aperto, CREATE TABLE - SQL richiede l'uso esclusivo del database. Per aprire un database per uso esclusivo, includere EXCLUSIVE in OPEN DATABASE.
Se un database non è aperto quando si crea la nuova tabella, incluse le clausole NAME, CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY o REFERENCES genera un errore.
Nota
La sintassi CREATE TABLE usa virgole per separare determinate opzioni CREATE TABLE. Inoltre, la clausola NULL, NOT NULL, CHECK, DEFAULT, PRIMARY KEY e UNIQUE deve essere inserita tra parentesi contenenti le definizioni di colonna.
Osservazioni del driver
Quando l'applicazione invia l'istruzione ODBC SQL CREATE TABLE all'origine dati, visual FoxPro ODBC Driver converte il comando nel comando Visual FoxProCREATE TABLE usando la sintassi illustrata nella tabella seguente.
| Sintassi ODBC | Sintassi di Visual FoxPro |
|---|---|
| CREATE TABLE base-table-name (tipo di dati dell'identificatore di colonna [NOT NULL] [,tipo di dati identificatore di colonna [NOT NULL] ...) |
CREATE TABLE TableName1 [NAME LongTableName] (FieldName1FieldType [(nFieldWidth [, nPrecision])] [NOT NULL]) |
Quando si crea una tabella usando il driver, il driver chiude la tabella immediatamente dopo la creazione per consentire l'accesso alla tabella da parte di altri utenti. Ciò differisce da Visual FoxPro, che lascia aperta la tabella esclusivamente al momento della creazione. Tuttavia, se viene eseguita una stored procedure nell'origine dati contenente un'istruzione CREATE TABLE, la tabella viene lasciata aperta.
Se l'origine dati è un database (file con estensione dbc), il driver ODBC Visual FoxPro crea una tabella denominata LongTableName con lo stesso nome di base-table-name.
Uso del linguaggio DDL (Data Definition Language)
Non è possibile includere DDL nelle posizioni seguenti:
In un'istruzione SQL batch che richiede una transazione
In modalità commit manuale, dopo un'istruzione che richiede una transazione, a meno che l'applicazione non chiami prima SQLTransact.
Ad esempio, se si vuole creare una tabella temporanea, è necessario creare la tabella prima di iniziare l'istruzione che richiede una transazione. Se si include l'istruzione CREATE TABLE in un'istruzione SQL batch che richiede una transazione, il driver restituisce un messaggio di errore.
Vedi anche
ALTER TABLE (comando SQL)
Tipi di dati supportati (driver ODBC Visual FoxPro)
INSERT (comando SQL)
SELECT (comando SQL)