Fórum Erro na criação de constraints #207995

21/01/2004

0

O que há de errado com o script abaixo? Utilizo delphi 7 e interbase 6.5


[color=red:3049ea842d]SET SQL DIALECT 3;

/* CREATE DATABASE ´C:\Meus Projetos\SCVP\SCVP.GDB´ PAGE_SIZE 4096

DEFAULT CHARACTER SET */

/* Table: CATEGORIAS, Owner: SYSDBA */

CREATE TABLE ´CATEGORIAS´
(
´COD_CAT´INTEGER NOT NULL,
´NOME_CAT´VARCHAR(50) CHARACTER SET WIN1252 NOT NULL,
´DESC_CAT´VARCHAR(70) CHARACTER SET WIN1252,
PRIMARY KEY (´COD_CAT´)
);

/* Table: CIDADES, Owner: SYSDBA */

CREATE TABLE ´CIDADES´
(
´COD_CID´INTEGER NOT NULL,
´COD_UF´INTEGER NOT NULL,
´NOME_CID´VARCHAR(40) CHARACTER SET WIN1252 NOT NULL,
´DESC_CID´VARCHAR(70) CHARACTER SET WIN1252,
PRIMARY KEY (´COD_CID´, ´COD_UF´)
);

/* Table: CLIENTES, Owner: SYSDBA */

CREATE TABLE ´CLIENTES´
(
´COD_CLI´INTEGER NOT NULL,
´NOME_CLI´VARCHAR(80) CHARACTER SET WIN1252 NOT NULL,
´DESC_CLI´VARCHAR(70) CHARACTER SET WIN1252,
PRIMARY KEY (´COD_CLI´)
);

/* Table: ESTADOS, Owner: SYSDBA */

CREATE TABLE ´ESTADOS´
(
´COD_UF´INTEGER NOT NULL,
´SIGLA_UF´VARCHAR(2) CHARACTER SET WIN1252 NOT NULL,
´DESC_UF´VARCHAR(70) CHARACTER SET WIN1252,
PRIMARY KEY (´COD_UF´)
);

/* Table: ITEMS, Owner: SYSDBA */

CREATE TABLE ´ITEMS´
(
´COD_PED´INTEGER NOT NULL,
´COD_PROD´INTEGER NOT NULL,
´PRECO_PROD´NUMERIC(9, 0) NOT NULL,
´QTD_PROD´INTEGER NOT NULL,
´VALOR_ITEM´NUMERIC(9, 0) NOT NULL,
´DESCONTO´INTEGER,
PRIMARY KEY (´COD_PED´, ´COD_PROD´)
);

/* Table: PEDIDOS, Owner: SYSDBA */

CREATE TABLE ´PEDIDOS´
(
´COD_PED´INTEGER NOT NULL,
´DATA_PED´DATE NOT NULL,
´VALOR_PED´NUMERIC(9, 0) NOT NULL,
´COD_CLI´INTEGER,
´COD_VEND´INTEGER NOT NULL,
PRIMARY KEY (´COD_PED´)
);

/* Table: PRODUTOS, Owner: SYSDBA */

CREATE TABLE ´PRODUTOS´
(
´COD_PROD´INTEGER NOT NULL,
´NOME_PROD´VARCHAR(50) CHARACTER SET WIN1252 NOT NULL,
´DESC_PROD´VARCHAR(70) CHARACTER SET WIN1252,
´PRECO_PROD´NUMERIC(9, 0) NOT NULL,
´ESTOQUE_PROD´INTEGER NOT NULL,
´COD_CAT´INTEGER NOT NULL,
PRIMARY KEY (´COD_PROD´)
);

/* Table: TIPO_USUARIOS, Owner: SYSDBA */

CREATE TABLE ´TIPO_USUARIOS´
(
´COD_TIP´INTEGER NOT NULL,
´TIPO_TIP´VARCHAR(13) CHARACTER SET WIN1252 NOT NULL,
´DESC_TIP´VARCHAR(100) CHARACTER SET WIN1252,
´ADMIN_TIP´VARCHAR(1) CHARACTER SET WIN1252 NOT NULL,
PRIMARY KEY (´COD_TIP´)
);

/* Table: USUARIOS, Owner: SYSDBA */

CREATE TABLE ´USUARIOS´
(
´COD_USU´INTEGER NOT NULL,
´COD_TIP´INTEGER NOT NULL,
´USUARIO´VARCHAR(100) CHARACTER SET WIN1252 NOT NULL,
´SENHA´VARCHAR(100) CHARACTER SET WIN1252 NOT NULL,
´DESC_USU´VARCHAR(70) CHARACTER SET WIN1252 NOT NULL,
PRIMARY KEY (´COD_USU´, ´COD_TIP´)
);
ALTER TABLE ´CIDADES´ ADD CONSTRAINT ´FK_EST_CID_COD_UF´ FOREIGN KEY (´COD_UF´) REFERENCES ESTADOS (´COD_UF´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´ITEMS´ ADD CONSTRAINT ´FK_PED_ITMS_COD_PED´ FOREIGN KEY (´COD_PED´) REFERENCES PEDIDOS (´COD_PED´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´ITEMS´ ADD CONSTRAINT ´FK_PROD_ITMS_COD_PROD´ FOREIGN KEY (´COD_PROD´) REFERENCES PRODUTOS (´COD_PROD´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´PEDIDOS´ ADD CONSTRAINT ´FK_CLI_PED_COD_CLI´ FOREIGN KEY (´COD_CLI´) REFERENCES CLIENTES (´COD_CLI´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´PEDIDOS´ ADD CONSTRAINT ´FK_VEND_PED_COD_VEND´ FOREIGN KEY (´COD_VEND´) REFERENCES VENDEDORES (´COD_VEND´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´PRODUTOS´ ADD CONSTRAINT ´FK_CAT_PROD_COD_CAT´ FOREIGN KEY (´COD_CAT´) REFERENCES CATEGORIAS (´COD_CAT´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´USUARIOS´ ADD CONSTRAINT ´FK_TIPUSU_USU_COD_TIP´ FOREIGN KEY (´COD_TIP´) REFERENCES TIPO_USUARIOS (´COD_TIP´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´VENDEDORES´ ADD CONSTRAINT ´FK_EST_VEND_COD_UF´ FOREIGN KEY (´COD_UF´) REFERENCES ESTADOS (´COD_UF´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´VENDEDORES´ ADD CONSTRAINT ´FK_CID_VEND_COD_CID´ FOREIGN KEY (´COD_CID´) REFERENCES CIDADES (´COD_CID´) ON UPDATE CASCADE ON DELETE NO ACTION;


/* Grant Roles for this database */


/* Grant permissions for this database */[/color:3049ea842d]


Rômulo Barros

Rômulo Barros

Responder

Posts

21/01/2004

Rômulo Barros

OBS: O erro ocorre durante a criação das constraints...... :oops:


Responder

Gostei + 0

21/01/2004

Vinicius2k

UI,
de acordo com seu script, vc não estah criando a table ´VENDEDORES´

espero ter ajudado...


Responder

Gostei + 0

21/01/2004

Rômulo Barros

[color=red:faa32f8f75]vinicius2K[/color:faa32f8f75]: É isso mesmo... Valeu......
:lol: Que erro infantil
T+


Responder

Gostei + 0

21/01/2004

Vinicius2k

eh assim mesmo... as vezes bate aquele enorme ´branco´... 8)


Responder

Gostei + 0

21/01/2004

Rômulo Barros

Mesmo assim, o erro continua. Ocorre na criação da constraint abaixo (Linha vermelha)


SET SQL DIALECT 3;

/* CREATE DATABASE ´C:\Documents and Settings\XP\Desktop\Rômulo\Meus Projetos\SCVP\DataBase\SCVP.GDB´ PAGE_SIZE 4096

DEFAULT CHARACTER SET */

/* Table: CATEGORIAS, Owner: SYSDBA */

CREATE TABLE ´CATEGORIAS´
(
´COD_CAT´INTEGER NOT NULL,
´NOME_CAT´VARCHAR(50) CHARACTER SET WIN1252 NOT NULL,
´DESC_CAT´VARCHAR(70) CHARACTER SET WIN1252,
PRIMARY KEY (´COD_CAT´)
);

/* Table: CIDADES, Owner: SYSDBA */

CREATE TABLE ´CIDADES´
(
´COD_CID´INTEGER NOT NULL,
´COD_UF´INTEGER NOT NULL,
´NOME_CID´VARCHAR(40) CHARACTER SET WIN1252 NOT NULL,
´DESC_CID´VARCHAR(70) CHARACTER SET WIN1252,
PRIMARY KEY (´COD_CID´, ´COD_UF´)
);

/* Table: CLIENTES, Owner: SYSDBA */

CREATE TABLE ´CLIENTES´
(
´COD_CLI´INTEGER NOT NULL,
´NOME_CLI´VARCHAR(80) CHARACTER SET WIN1252 NOT NULL,
´DESC_CLI´VARCHAR(70) CHARACTER SET WIN1252,
PRIMARY KEY (´COD_CLI´)
);

/* Table: ESTADOS, Owner: SYSDBA */

CREATE TABLE ´ESTADOS´
(
´COD_UF´INTEGER NOT NULL,
´SIGLA_UF´VARCHAR(2) CHARACTER SET WIN1252 NOT NULL,
´DESC_UF´VARCHAR(70) CHARACTER SET WIN1252,
PRIMARY KEY (´COD_UF´)
);

/* Table: ITEMS, Owner: SYSDBA */

CREATE TABLE ´ITEMS´
(
´COD_PED´INTEGER NOT NULL,
´COD_PROD´INTEGER NOT NULL,
´PRECO_PROD´NUMERIC(9, 0) NOT NULL,
´QTD_PROD´INTEGER NOT NULL,
´VALOR_ITEM´NUMERIC(9, 0) NOT NULL,
´DESCONTO´INTEGER,
PRIMARY KEY (´COD_PED´, ´COD_PROD´)
);

/* Table: PEDIDOS, Owner: SYSDBA */

CREATE TABLE ´PEDIDOS´
(
´COD_PED´INTEGER NOT NULL,
´DATA_PED´DATE NOT NULL,
´VALOR_PED´NUMERIC(9, 0) NOT NULL,
´COD_CLI´INTEGER,
´COD_VEND´INTEGER NOT NULL,
PRIMARY KEY (´COD_PED´)
);

/* Table: PRODUTOS, Owner: SYSDBA */

CREATE TABLE ´PRODUTOS´
(
´COD_PROD´INTEGER NOT NULL,
´NOME_PROD´VARCHAR(50) CHARACTER SET WIN1252 NOT NULL,
´DESC_PROD´VARCHAR(70) CHARACTER SET WIN1252,
´PRECO_PROD´NUMERIC(9, 0) NOT NULL,
´ESTOQUE_PROD´INTEGER NOT NULL,
´COD_CAT´INTEGER NOT NULL,
PRIMARY KEY (´COD_PROD´)
);

/* Table: TIPO_USUARIOS, Owner: SYSDBA */

CREATE TABLE ´TIPO_USUARIOS´
(
´COD_TIP´INTEGER NOT NULL,
´TIPO_TIP´VARCHAR(13) CHARACTER SET WIN1252 NOT NULL,
´DESC_TIP´VARCHAR(100) CHARACTER SET WIN1252,
´ADMIN_TIP´VARCHAR(1) CHARACTER SET WIN1252 NOT NULL,
PRIMARY KEY (´COD_TIP´)
);

/* Table: USUARIOS, Owner: SYSDBA */

CREATE TABLE ´USUARIOS´
(
´COD_USU´INTEGER NOT NULL,
´COD_TIP´INTEGER NOT NULL,
´USUARIO´VARCHAR(100) CHARACTER SET WIN1252 NOT NULL,
´SENHA´VARCHAR(100) CHARACTER SET WIN1252 NOT NULL,
´DESC_USU´VARCHAR(70) CHARACTER SET WIN1252 NOT NULL,
PRIMARY KEY (´COD_USU´, ´COD_TIP´)
);

/* Table: VENDEDORES, Owner: SYSDBA */

CREATE TABLE ´VENDEDORES´
(
´COD_VEND´INTEGER NOT NULL,
´NOME_VEND´VARCHAR(80) NOT NULL,
´CPF_VEND´VARCHAR(14) NOT NULL,
´RG_VEND´VARCHAR(12) NOT NULL,
´DT_NASC_VEND´DATE NOT NULL,
´END_VEND´VARCHAR(150) NOT NULL,
´CEP_VEND´VARCHAR(10) NOT NULL,
´COD_CID´INTEGER NOT NULL,
´COD_UF´INTEGER NOT NULL,
´FONE_RES_VEND´VARCHAR(9),
´FONE_CEL_VEND´VARCHAR(9),
´EMAIL_VEND´VARCHAR(90),
PRIMARY KEY (´COD_VEND´)
);
ALTER TABLE ´CIDADES´ ADD CONSTRAINT ´FK_EST_CID_COD_UF´ FOREIGN KEY (´COD_UF´) REFERENCES ESTADOS (´COD_UF´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´ITEMS´ ADD CONSTRAINT ´FK_PED_ITMS_COD_PED´ FOREIGN KEY (´COD_PED´) REFERENCES PEDIDOS (´COD_PED´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´ITEMS´ ADD CONSTRAINT ´FK_PROD_ITMS_COD_PROD´ FOREIGN KEY (´COD_PROD´) REFERENCES PRODUTOS (´COD_PROD´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´PEDIDOS´ ADD CONSTRAINT ´FK_CLI_PED_COD_CLI´ FOREIGN KEY (´COD_CLI´) REFERENCES CLIENTES (´COD_CLI´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´PEDIDOS´ ADD CONSTRAINT ´FK_VEND_PED_COD_VEND´ FOREIGN KEY (´COD_VEND´) REFERENCES VENDEDORES (´COD_VEND´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´PRODUTOS´ ADD CONSTRAINT ´FK_CAT_PROD_COD_CAT´ FOREIGN KEY (´COD_CAT´) REFERENCES CATEGORIAS (´COD_CAT´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´USUARIOS´ ADD CONSTRAINT ´FK_TIPUSU_USU_COD_TIP´ FOREIGN KEY (´COD_TIP´) REFERENCES TIPO_USUARIOS (´COD_TIP´) ON UPDATE CASCADE ON DELETE NO ACTION;
ALTER TABLE ´VENDEDORES´ ADD CONSTRAINT ´FK_EST_VEND_COD_UF´ FOREIGN KEY (´COD_UF´) REFERENCES ESTADOS (´COD_UF´) ON UPDATE CASCADE ON DELETE NO ACTION;
[color=red:b0f676ebdb]ALTER TABLE ´VENDEDORES´ ADD CONSTRAINT ´FK_CID_VEND_COD_CID´ FOREIGN KEY (´COD_CID´) REFERENCES CIDADES (´COD_CID´) ON UPDATE CASCADE ON DELETE NO ACTION[/color:b0f676ebdb]


/* Grant Roles for this database */


/* Grant permissions for this database */


Responder

Gostei + 0

21/01/2004

Vinicius2k

UI,

CREATE TABLE ´CIDADES´ ( ´COD_CID´INTEGER NOT NULL, ´COD_UF´INTEGER NOT NULL, ´NOME_CID´VARCHAR(40) CHARACTER SET WIN1252 NOT NULL, ´DESC_CID´VARCHAR(70) CHARACTER SET WIN1252, [color=red:2746f53ec5][b:2746f53ec5]PRIMARY KEY (´COD_CID´, ´COD_UF´)[/b:2746f53ec5][/color:2746f53ec5] );


note que seu PK da tabela CIDADES eh concatenado pelo código da cidade e da UF e vc estah referenciando apenas o código da cidade...

CONSTRAINT ´FK_CID_VEND_COD_CID´ FOREIGN KEY (´COD_CID´) [b:2746f53ec5][color=red:2746f53ec5]REFERENCES CIDADES (´COD_CID´) [/color:2746f53ec5][/b:2746f53ec5]ON UPDATE CASCADE ON DELETE NO ACTION;


ou vc cria um outro índice UNIQUE com o código da cidade apenas ou referencia com a chave concatenada... depende do seu modelo lógico...

espero ter ajudado...


Responder

Gostei + 0

21/01/2004

Rômulo Barros

:lol: Corretíssimo..... value e T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar