Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

No puedo crear una llave foranea

Estas en el tema de No puedo crear una llave foranea en el foro de PostgreSQL en Foros del Web. Hola: Mi problema es que no puedo crear una llave foranea solo me sale este error Mens. 156, Nivel 15, Estado 1, Línea 3 Sintaxis ...
  #1 (permalink)  
Antiguo 23/03/2009, 13:53
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Pregunta No puedo crear una llave foranea

Hola:

Mi problema es que no puedo crear una llave foranea solo me sale este error
Mens. 156, Nivel 15, Estado 1, Línea 3
Sintaxis incorrecta cerca de la palabra clave 'CONSTRAINT'.

no me parece q ande tan mal les dejo el codigo porfa ayudenme y muchas gracias

codigo:
--------------------------------------------------
create database renta_auto
go
use renta_auto

create table cliente (
idcliente int not null,
nombre varchar (50),
direccion varchar (50),
telefono varchar (50),
notarjeta bigint
)
go

create table automovil (
placa varchar (9) not null,
nombre varchar (50),
marca varchar (50),
modelo int,
transmision varchar (50),
color varchar (50)
)
go

create table renta (
idcliente int not null,
placa varchar (9) not null,
fecha smalldatetime not null,
kilometraje int not null,
precio money not null
)
go


ALTER TABLE cliente
add constraint PK_cliente primary key (idcliente)
go

alter table automovil
add constraint PK_automovil primary key (placa)
go

alter table renta
add constraint PK_renta primary key (idcliente, placa, fecha)
go


ALTER TABLE renta
ADD CONSTRAINT FK_renta_cliente FOREIGN KEY (idcliente) REFERENCES cliente (idcliente)
CONSTRAINT FK_renta_automovil FOREIGN KEY (placa) REFERENCES automovil (placa)
  #2 (permalink)  
Antiguo 23/03/2009, 21:27
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: No puedo crear una llave foranea

cherry1024

Este es un foro de postgresql, pero al parecer, estas trabajando con otro RDBMS.
Suponiendo que es mysql (Por el uso de (use) para acceder a la BD creada)
Tienes varios errores de sintaxis y tipos de datos.
1. Si quieres ejecutar todo al mismo tiempo, debes cerrar las sentencias con (;).
2. go no es una palabra que soporte ni postgresql ni mysql.
3. Los tipos de datos smalldatetime y money te estan presentando errores (En caso que estes trabajando con mysql)

El codigo que funciona es:

Cita:
create database renta_auto;

use renta_auto;

create table cliente (
idcliente int not null,
nombre varchar (50),
direccion varchar (50),
telefono varchar (50),
notarjeta bigint
);


create table automovil (
placa varchar (9) not null,
nombre varchar (50),
marca varchar (50),
modelo int,
transmision varchar (50),
color varchar (50)
);


create table renta (
idcliente int not null,
placa varchar (9) not null,
fecha datetime not null,
kilometraje int not null,
precio decimal(10,2) not null
);


ALTER TABLE cliente
add constraint PK_cliente primary key (idcliente);

alter table automovil
add constraint PK_automovil primary key (placa);
Un saludo
  #3 (permalink)  
Antiguo 24/03/2009, 17:07
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 17 años, 3 meses
Puntos: 20
Respuesta: No puedo crear una llave foranea

Por aca esta la manera correcta de crear llaves foraneas en postgresql

Código sql:
Ver original
  1. /*
  2. 5.3.5. Foreign Keys
  3.  
  4. A foreign key constraint specifies that the values in a column (or a group of columns) must match the values appearing in some row of another table.
  5. We say this maintains the referential integrity between two related tables.
  6. Say you have the product table that we have used several times already:
  7. */
  8.  
  9. CREATE TABLE products (
  10.     product_no INTEGER PRIMARY KEY,
  11.     name text,
  12.     price NUMERIC
  13. );
  14.  
  15. /*
  16. Let's also assume you have a table storing orders of those products.
  17. We want to ensure that the orders table only contains orders of products that actually exist.
  18.  
  19. So we define a foreign key constraint in the orders table that references the products table:
  20. */
  21.  
  22. CREATE TABLE orders (
  23.     order_id INTEGER PRIMARY KEY,
  24.     product_no INTEGER REFERENCES products (product_no),
  25.     quantity INTEGER
  26. );
  27.  
  28. /*
  29. Now it is impossible to create orders with product_no entries that do not appear in the products table.
  30.  
  31. We say that in this situation the orders table is the referencing table and the products table is the referenced table.
  32. Similarly, there are referencing and referenced columns.
  33. */
  #4 (permalink)  
Antiguo 27/03/2009, 23:26
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: No puedo crear una llave foranea

hola gracias por sus respuestas, y una disculpa me equivoque de foro la bd esta en SQL server express edition 2005
sorry, muchas gracias, todavia no checo la bd con sus respuestas. gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:09.