1. Rômulo Sorato
  2. PowerBuilder
  3. Friday, 04 October 2019

when i run this sql in interactive sql it trows an error

You have an error in your SQL syntax; it seems the error is around: 'autoincrement, nome varchar(60) not null, sigla char(2) not null, primary ' at line 2

this is the sql


create table estados(
id integer not null default autoincrement,
nome varchar(60) not null,
sigla char(2) not null,
primary key(id) )

create table cidades(
id integer not null default autoincrement,
nome varchar(60) not null,
estado_id integer not null,
primary key(id) )

alter table cidades
add foreign key fk_cidades_estados(estado_id)
references estados(id) on delete restrict

create table pessoas(
id integer not null,
nome varchar(60) not null,
data_nascimento date not null,
cpf char(11) not null unique,
cidade_id integer not null,
primary key(id) )

alter table pessoas
add foreign key fk_pessoas_cidades(cidade_id)
references cidades(id) on delete restrict

create table contratos(
id integer not null,
pessoa_id integer not null,
data_assinatura date not null,
valor numeric(13,2) not null,
primary key(id) )

alter table contratos
add foreign key fk_contratos_pessoas(pessoa_id)
references pessoas(id) on delete restrict

insert into estados(nome, sigla) values ('Santa Catarina', 'SC'),
('Rio grande do Sul', 'RS'),
('Paraná', 'PR'),
('São Paulo', 'SP'),
('Rio de Janeiro', 'RJ'),
('Minas Gerais', 'MG'),
('Bahia', 'BA'),
('Espirito Santo', 'ES');

insert into cidades(nome, estado_id) values ('Criciúma', 1),
('Tubarão', 1),
('Florianópolis', 1),
('Porto Alegre', 2),
('Gramado', 2),
('Pelotas', 2),
('Curitiba', 3),
('Londrina', 3),
('Foz do Iguaçu', 3),
('São Paulo', 4),
('Campinas', 2),
('São José dos Campos', 4),
('Rio de Janeiro', 5),
('Búzios', 5),
('Petrópolis', 5),
('Belo Horizonte', 6),
('Pato de minas', 6),
('Patrocínio', 6),
('Salvador', 7),
('Feira de Santana', 7),
('Barreiras', 7),
('Vitória', 8);

0
Votes
Undo

This works fine for me on SQL Anywhere V12:

create table estados(
id integer not null default autoincrement,
nome varchar(60) not null,
sigla char(2) not null,
primary key(id) );

create table cidades(
id integer not null default autoincrement,
nome varchar(60) not null,
estado_id integer not null,
primary key(id) );

alter table cidades
add foreign key fk_cidades_estados(estado_id)
references estados(id) on delete restrict;

create table pessoas(
id integer not null,
nome varchar(60) not null,
data_nascimento date not null,
cpf char(11) not null unique,
cidade_id integer not null,
primary key(id) );

alter table pessoas
add foreign key fk_pessoas_cidades(cidade_id)
references cidades(id) on delete restrict;

create table contratos(
id integer not null,
pessoa_id integer not null,
data_assinatura date not null,
valor numeric(13,2) not null,
primary key(id) );

alter table contratos
add foreign key fk_contratos_pessoas(pessoa_id)
references pessoas(id) on delete restrict;

insert into estados(nome, sigla) values ('Santa Catarina', 'SC'),
('Rio grande do Sul', 'RS'),
('Paraná', 'PR'),
('São Paulo', 'SP'),
('Rio de Janeiro', 'RJ'),
('Minas Gerais', 'MG'),
('Bahia', 'BA'),
('Espirito Santo', 'ES');

insert into cidades(nome, estado_id) values ('Criciúma', 1),
('Tubarão', 1),
('Florianópolis', 1),
('Porto Alegre', 2),
('Gramado', 2),
('Pelotas', 2),
('Curitiba', 3),
('Londrina', 3),
('Foz do Iguaçu', 3),
('São Paulo', 4),
('Campinas', 2),
('São José dos Campos', 4),
('Rio de Janeiro', 5),
('Búzios', 5),
('Petrópolis', 5),
('Belo Horizonte', 6),
('Pato de minas', 6),
('Patrocínio', 6),
('Salvador', 7),
('Feira de Santana', 7),
('Barreiras', 7),
('Vitória', 8);

Comment
Hi David ... yes, a ";" after every command block. :-)
  1. Chris Pollach
  2. Monday, 7 October 2019
Indeed Chris, But I had to prove it first ;-)
There are no comments made yet.
  1. Monday, 7 October 2019
  2. PowerBuilder
  3. # 1
Chris Pollach Accepted Answer Pending Moderation
1
Votes
Undo

Hi Rômulo;

   Every DML command statement must end with a ";".

In your case, for example ...

create table estados(
id integer not null default autoincrement,
nome varchar(60) not null,
sigla char(2) not null,
primary key(id) )  ;             <=

HTH

Regards ... Chris

Comment
There are no comments made yet.
  1. Friday, 4 October 2019
  2. PowerBuilder
  3. # 2
Michael Kramer Accepted Answer Pending Moderation
1
Votes
Undo

Hey Romulo,

What DBMS are you using? It looks like SQL Anywhere but to be sure before troubleshooting further

Thanks /Michael

Comment
I'm with Michael... What DB are you targeting?
Code is definitely SQL Anywhere - without semicolons required by PB IDE's Interactive SQL.

I have often seen complaints that ASE/MSSQL/Oracle fail to execute SQLAny syntax. :)
  1. Michael Kramer
  2. Monday, 7 October 2019
There are no comments made yet.
  1. Friday, 4 October 2019
  2. PowerBuilder
  3. # 3
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.