 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Mar 05 Dic, 2006 10:30 pm Asunto: SQL |
|
|
Hola, estoy teniendo un problema con SQL, estoy trabajando con interbase 6 y me da un error cuando intento crear la base de dato, no se si estoy haciendo algo mal les agradeceria su ayuda ya le di vuelta vastante y no encontre porque me tira un error de indece, si es un problema conseptual que tengo me podrian indicar alguna guia sobre SQL para leer, gracias
este es el codigo que estoy usando me da un error en la tabla clientes cuando intento relacionarla
/*
al server lo baje de
ftp://ftpc.borland.com/pub/interbase/devsupport/open_source/InterBase_WI-V6.0.1-server.ZIP
*/
CREATE DATABASE 'C:\DataBase\interbase\cheques.gdb' USER 'SYSDBA' PASSWORD 'masterkey';
/* CREATE DOMAIN T_YESNO AS CHAR(1) DEFAULT 'N' CHECK((VALUE IS NULL) OR (VALUE IN ('N','Y'))); */
/* Original table name is "Numeros" */
CREATE TABLE "Numeros" (
"CENTENA" VARCHAR(14),
"DECENA" VARCHAR(10),
"UNIDAD" VARCHAR(14)
);
/* Original table name is "Paises" */
CREATE TABLE "Paises" (
"IdPais" INTEGER NOT NULL PRIMARY KEY,
"ESPANOL" VARCHAR( 38 )
);
/* Generators for AutoInc fields for table "Paises" */
/* SELECT max(Paises.IdPais) FROM Paises */
CREATE GENERATOR "CodPais";
SET GENERATOR "CodPais" TO 10;
SET TERM ^;
CREATE TRIGGER "NewPais" FOR "Paises"
ACTIVE BEFORE INSERT
AS BEGIN
IF(NEW."IdPais" IS NULL) THEN NEW."IdPais" = GEN_ID("CodPais",1);
END ^
SET TERM ;^
/* Original table name is "Provincias" */
CREATE TABLE "Provincias" (
"IdProvincia" INTEGER NOT NULL PRIMARY KEY,
"RefPais" INTEGER not null,
"Provincia" VARCHAR(30),
FOREIGN KEY ("RefPais") REFERENCES "Paises" ("IdPais")
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE GENERATOR "CodProvincia";
SET GENERATOR "CodProvincia" TO 10;
SET TERM ^;
CREATE TRIGGER "NewProvincia" FOR "Provincias"
ACTIVE BEFORE INSERT
AS BEGIN
IF(NEW."IdProvincia" IS NULL) THEN NEW."IdProvincia" = GEN_ID("CodProvincia",1);
END ^
SET TERM ;^
/* Original table name is "Ciudad" */
CREATE TABLE "Ciudad" (
"IdCuidad" INTEGER NOT NULL PRIMARY KEY,
"RefProvincia" INTEGER not null,
"CodPostal" VARCHAR( 8 ) ,
"Ciudad" VARCHAR(40),
FOREIGN KEY ("RefProvincia") REFERENCES "Provincias" ("IdProvincia")
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE GENERATOR "CodCiudad";
SET GENERATOR "CodCiudad" TO 10;
SET TERM ^;
CREATE TRIGGER "NewCiudad" FOR "Ciudad"
ACTIVE BEFORE INSERT
AS BEGIN
IF(NEW."IdCuidad" IS NULL) THEN NEW."IdCuidad" = GEN_ID("CodCiudad",1);
END ^
SET TERM ;^
/* Original table name is "Clientes" */
CREATE TABLE Clientes (
"IdCliente" INTEGER NOT NULL PRIMARY KEY ,
"RefCiudad" INTEGER not null,
"Empresa" VARCHAR(40) ,
"Apellido" VARCHAR(20) ,
"Nombre" VARCHAR(30) ,
"Cargo" VARCHAR(30) ,
"Direccion" VARCHAR(60) ,
"Telefono" VARCHAR(24) ,
"Fax" VARCHAR(24) ,
"Observacion" VARCHAR(254),
FOREIGN KEY ("RefCiudad") REFERENCES "Cuidad" ("IdCuidad")
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
/*
CREATE GENERATOR CodCliente;
SET GENERATOR CodCliente TO 10;
SET TERM ^;
CREATE TRIGGER NewCliente FOR Clientes BEFORE INSERT
AS BEGIN
IF(NEW.IdCliente IS NULL) THEN NEW.IdCliente = GEN_ID(CodCliente,1);
END ^
SET TERM ;^
*/ |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 10 Ene, 2007 11:56 am Asunto: |
|
|
No conozco demasiado bien las características de Firefox, pero para crea la tabla me parece que la definición de la clave primaria la tienes mal. ¿Has probado esto otro?
| Código: | CREATE TABLE Clientes (
"IdCliente" INTEGER NOT NULL ,
"RefCiudad" INTEGER not null,
"Empresa" VARCHAR(40) ,
"Apellido" VARCHAR(20) ,
"Nombre" VARCHAR(30) ,
"Cargo" VARCHAR(30) ,
"Direccion" VARCHAR(60) ,
"Telefono" VARCHAR(24) ,
"Fax" VARCHAR(24) ,
"Observacion" VARCHAR(254),
PRIMARY KEY ("IdCliente") ,
FOREIGN KEY ("RefCiudad") REFERENCES "Cuidad" ("IdCuidad")
ON DELETE NO ACTION
ON UPDATE NO ACTION) |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Mie 10 Ene, 2007 5:05 pm Asunto: |
|
|
| Tor escribió: | | Hola, estoy teniendo un problema con SQL, estoy trabajando con interbase 6 y me da un error cuando intento crear la base de dato, no se si estoy haciendo algo mal les agradeceria su ayuda ya le di vuelta vastante y no encontre porque me tira un error de indece, si es un problema conseptual que tengo me podrian indicar alguna guia sobre SQL para leer, gracias |
Que tal Tor
El problema está en el nombre de la tabla de referencia, estas haciendo una referencia a una tabla llamada "Cuidad" la cual no existe, la tabla se llama "Ciudad".
| Código: | FOREIGN KEY ("RefCiudad") REFERENCES "Cuidad" ("IdCuidad") |
Son solo errores de dedo. Otro caso es el nombre de la llave primaria de la tabla "Ciudad". Lo has llamado "IdCuidad" pero creo que lo corecto es "IdCiudad". Un detalle más es que si estas utiilzando comillas para nombrar los objetos de la base de datos, te recomiendo lo hagas en todo.
Modifique los detalles que te acabo de mencionar (nombre de tabla en la referencia, cambio del nombre del campo llave de ciudad y comillas en la ultima parte del script) y queda de la siguiente manera:
| Código: | CREATE DATABASE 'C:\DataBase\interbase\cheques.gdb' USER 'SYSDBA' PASSWORD 'masterkey';
/* CREATE DOMAIN T_YESNO AS CHAR(1) DEFAULT 'N' CHECK((VALUE IS NULL) OR (VALUE IN ('N','Y'))); */
/* Original table name is "Numeros" */
CREATE TABLE "Numeros" (
"CENTENA" VARCHAR(14),
"DECENA" VARCHAR(10),
"UNIDAD" VARCHAR(14)
);
/* Original table name is "Paises" */
CREATE TABLE "Paises" (
"IdPais" INTEGER NOT NULL PRIMARY KEY,
"ESPANOL" VARCHAR( 38 )
);
/* Generators for AutoInc fields for table "Paises" */
/* SELECT max(Paises.IdPais) FROM Paises */
CREATE GENERATOR "CodPais";
SET GENERATOR "CodPais" TO 10;
SET TERM ^;
CREATE TRIGGER "NewPais" FOR "Paises"
ACTIVE BEFORE INSERT
AS BEGIN
IF(NEW."IdPais" IS NULL) THEN NEW."IdPais" = GEN_ID("CodPais",1);
END ^
SET TERM ;^
/* Original table name is "Provincias" */
CREATE TABLE "Provincias" (
"IdProvincia" INTEGER NOT NULL PRIMARY KEY,
"RefPais" INTEGER not null,
"Provincia" VARCHAR(30),
FOREIGN KEY ("RefPais") REFERENCES "Paises" ("IdPais")
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE GENERATOR "CodProvincia";
SET GENERATOR "CodProvincia" TO 10;
SET TERM ^;
CREATE TRIGGER "NewProvincia" FOR "Provincias"
ACTIVE BEFORE INSERT
AS BEGIN
IF(NEW."IdProvincia" IS NULL) THEN NEW."IdProvincia" = GEN_ID("CodProvincia",1);
END ^
SET TERM ;^
/* Original table name is "Ciudad" */
CREATE TABLE "Ciudad" (
"IdCiudad" INTEGER NOT NULL PRIMARY KEY,
"RefProvincia" INTEGER not null,
"CodPostal" VARCHAR( 8 ) ,
"Ciudad" VARCHAR(40),
FOREIGN KEY ("RefProvincia") REFERENCES "Provincias" ("IdProvincia")
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE GENERATOR "CodCiudad";
SET GENERATOR "CodCiudad" TO 10;
SET TERM ^;
CREATE TRIGGER "NewCiudad" FOR "Ciudad"
ACTIVE BEFORE INSERT
AS BEGIN
IF(NEW."IdCiudad" IS NULL) THEN NEW."IdCiudad" = GEN_ID("CodCiudad",1);
END ^
SET TERM ;^
/* Original table name is "Clientes" */
CREATE TABLE "Clientes" (
"IdCliente" INTEGER NOT NULL PRIMARY KEY ,
"RefCiudad" INTEGER not null,
"Empresa" VARCHAR(40) ,
"Apellido" VARCHAR(20) ,
"Nombre" VARCHAR(30) ,
"Cargo" VARCHAR(30) ,
"Direccion" VARCHAR(60) ,
"Telefono" VARCHAR(24) ,
"Fax" VARCHAR(24) ,
"Observacion" VARCHAR(254),
FOREIGN KEY ("RefCiudad") REFERENCES "Ciudad" ("IdCiudad")
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE GENERATOR "CodCliente";
SET GENERATOR "CodCliente" TO 10;
SET TERM ^;
CREATE TRIGGER "NewCliente" FOR "Clientes" BEFORE INSERT
AS BEGIN
IF(NEW."IdCliente" IS NULL) THEN NEW."IdCliente" = GEN_ID("CodCliente",1);
END ^
SET TERM ;^ |
Lo he probado y funciona correctamente.
Saludos! _________________ Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida. |
|
| Volver arriba |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Sab 13 Ene, 2007 4:39 pm Asunto: gracias |
|
|
gracias amigos, lo modifique y ya esta me han guiado perfectamente.  |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|