![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Mas de un campo clave en IB.
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. |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
![]() ¿Agregando eso evitaría valores duplicados en esos campos?
Gracias por tu respuesta. |
#4
|
|||
|
|||
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. |
#5
|
|||
|
|||
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. |
#6
|
|||
|
|||
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, |
#7
|
|||
|
|||
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. |
#8
|
|||
|
|||
Ok. Gracias por vuestra ayuda.
|
![]() |
|
|
![]() |
|