3 votes

Advantage Database 9.1, Créer une table avec PK

create table WEBLOG
(
ORDERNO CHAR(9) NOT NULL,
USERNAME CHAR(50) NOT NULL,
ACTION CHAR(255) NOT NULL,
NOTE MEMO,
UPDATEDATE DATE NOT NULL,
UPDATETIME TIME NOT NULL,
IP CHAR(15),
PK CHAR(36) NOT NULL,
PRIMARY KEY(PK)
)

la requête ci-dessus ne fonctionne pas, le message d'erreur dit,

ERROR IN SCRIPT: poQuery: Error 7200:  AQE Error:  State = HY000;   NativeError = 2215;  [iAnywhere Solutions][Advantage SQL Engine]Invalid create options:  
NOCPTRANS and nullable column type options are only valid with ADS_VFP table type. -- Location of error in the SQL statement is: 23 (line: 3 column: 1)

Qu'est-ce qui ne va pas avec cette requête ?

La version de ma base de données Advantage est la 9.1.

Si quelqu'un le sait, qu'il me conseille.

Gracias.

4voto

Ken White Points 73213

Cette erreur est provoquée par l'utilisation de l'option NOT NULL qui n'est pris en charge que pour le type de tableau ADS_VFP (Visual FoxPro).

La manière habituelle de traiter NOT NULL avec Advantage est d'établir la connexion via un dictionnaire de données ADS, puis d'utiliser la fonction CONSTRAINT NOT NULL à la place. Cela ne fonctionnera pas sur free table (tables ne faisant pas partie d'un dictionnaire de données), cependant - en essayant de le changer en CONSTRAINT NOT NULL sur une table libre entraîne l'erreur suivante The field-level or record-level constraint is invalid. Field level constraints are not supported on free table.

Ceci est documenté dans le Aide ADS 9.1 , en particulier dans le cadre de CRÉER UNE TABLE :

vfp-option ::= NULL | NOT NULL | NOCPTRANS

Ces options s'appliquent aux tables Visual FoxPro (ADS_VFP) et peuvent être utilisées avec les tables libres et les tables du dictionnaire de données. Les options NULL (et NOT NULL) indiquent si la colonne peut physiquement contenir une valeur NULL. Ceci est différent d'une contrainte NOT NULL. Si une colonne Visual FoxPro est créée sans l'option NULL, une erreur sera générée si l'on tente de stocker une valeur NULL dans cette colonne. L'option NOCPTRANS s'applique aux types de champs Visual FoxPro de type caractère et mémo. Si cette option est fournie, les données ne seront pas traduites d'une page de code à l'autre (conversions ANSI/OEM).

BTW, lorsque vous obtenez une erreur de syntaxe dans ARC32 et que votre SQL est structuré comme le vôtre, le curseur se trouve sur la ligne qui provoque l'erreur. Dans ce cas, l'erreur a été causée sur la toute première définition de colonne ( ORDERNO CHAR(9) NOT NULL ). En modifiant la définition de cette colonne unique pour supprimer le NOT NULL fait en sorte que l'erreur se produise à la ligne suivante.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X