What's wrong, I cannot create this table

371 Views Asked by At

That's my first time using Firebird. I am trying to create this table. I checked the docs and it seems ok. What's wrong?

CREATE TABLE ENDERECO 
(
      ID_ENDERECO INTEGER generated by default as identity primary KEY,
     RUA VARCHAR(50), 
     BAIRRO VARCHAR(35),
     CEP VARCHAR(10),
     COMPLEMENTO VARCHAR(35),
     ECOMERCIO INTEGER(1),
     ESTADO CHAR(2)

)
1

There are 1 best solutions below

0
On BEST ANSWER

The problem is your use of INTEGER(1). The data type INTEGER (and SMALLINT and BIGINT) do not have a precision in their definition. See also Data Type Declaration Syntax in the Firebird 3 Language Reference:

<domain_or_non_array_type> ::=
    <scalar_datatype>
  | <blob_datatype>
  | [TYPE OF] domain
  | TYPE OF COLUMN rel.col

<scalar_datatype> ::=
    SMALLINT | INT[EGER] | BIGINT
  | FLOAT | DOUBLE PRECISION
  | BOOLEAN
  | DATE | TIME | TIMESTAMP
  | {DECIMAL | NUMERIC} [(precision [, scale])]
  | {VARCHAR | {CHAR | CHARACTER} VARYING} (length)
    [CHARACTER SET charset]
  | {CHAR | CHARACTER} [(length)] [CHARACTER SET charset]
  | {NCHAR | NATIONAL {CHARACTER | CHAR}} VARYING (length)
  | {NCHAR | NATIONAL {CHARACTER | CHAR}} [(length)]

In short, use:

CREATE TABLE ENDERECO 
(
     ID_ENDERECO INTEGER generated by default as identity primary KEY,
     RUA VARCHAR(50), 
     BAIRRO VARCHAR(35),
     CEP VARCHAR(10),
     COMPLEMENTO VARCHAR(35),
     ECOMERCIO INTEGER,
     ESTADO CHAR(2)
)