PDA

Ver la Versión Completa : Mas de un campo clave en IB.


BECERRA
27-05-2003, 19:44:34
Hola amiguetes:

¿ Podría decirme alguien si puedo definir mas de un campo clave en Interbase ?

CREATE TABLE HORAS (
ID INTEGER NOT NULL,
TIPO VARCHAR (25) character set ISO8859_1 collate ISO8859_1,
IMPORTE NUMERIC (6, 2),
IDCATEGORIA INTEGER,
NOMBRECATEGORIA VARCHAR (25) character set ISO8859_1 collate ISO8859_1);



/* Primary keys definition */

ALTER TABLE HORAS ADD CONSTRAINT PK_HORAS PRIMARY KEY (ID);

SET TERM ^ ;

Por ejemplo en esta tabla quiero que el campo IDCATEGORIA sea Clave.

Saludos.

Iván
27-05-2003, 19:51:04
Buenas.

En una tabla sólo puede haber una clave primaria, nada más. Pero una clave primaria puede estar formada por varios campos.

En tu ejemplo seria:

ALTER TABLE HORAS ADD CONSTRAINT PK_HORAS PRIMARY KEY (ID,IDCATEGORIA );


Saludos.

BECERRA
27-05-2003, 22:59:50
¿Agregando eso evitaría valores duplicados en esos campos?

Gracias por tu respuesta.

Iván
28-05-2003, 08:33:49
Exactamente.

La función de una clave primaria es definir uno o varios campos que no se puedan repetir en dos registros diferentes. Así, si tienes un:

id = 0
idcategoria = 1

Sabes que un único registro podrá tener esta combinación, y ninguno más.

Un saludo.

BECERRA
28-05-2003, 09:28:23
Umm, entonces si existe un registro con los siguientes valores
ID=0 y IDCATEGORIA=1, no voy a poder tener otro registro con alguno de esos dos valores, es decir, ID=0 o Idcategoria=1.
O únicamente afectaría a la la combinación de esos dos valores,
ID=0 y IDCATEGORIA=1.

Kafu
28-05-2003, 09:39:04
Si se trata de una clave compuesta lo que no puede repetirse es la combinación de los valores.
Es decir, puede haber (0,1) y (0, 2) porque son combinaciones diferentes. No sé si se puede hacer que ambos campos sean de valor único, supongo que habrá manera. Un saludo,

Iván
28-05-2003, 10:42:49
Si que hay una forma para que sólo un regitro fuera id = 0 y ninguno más fuera ese valor, y es definiendo una restricción sobre el campo de Unico. Así, sólo un registro podrá tener valor id=0.


Es más, hay gente que en vez de definir claves primarias cuando la clave es un único campo, se conforma con decir que el campo ha de ser único, ya que así consigue el mismo efecto que una clave primaria.

Un saludo.

BECERRA
28-05-2003, 11:46:48
Ok. Gracias por vuestra ayuda.