Cita:
|
Empezado por kinobi
¿Cómo puede ser que esos "segmentos" de la clave primaria sean a la vez únicos y que puedan repetirse?
|
kinobi, lo que intento explicar es primero lo que quiero lograr hacer:
Cita:
|
Empezado por senpiterno
es posible crear 2 Primary Key en una tabla, pero que cada uno por si solo sea unico dentro de esta.
|
y despues lo que me esta ocurriendo ahora con la declaracion de las primary key de la tabla:
Cita:
|
Empezado por senpiterno
Me explico obviamente es posible crear 2 campos claves dentro de una tabla, los cuales en su conjunto seran unicos, pero es perfectamente factible que uno de esos campos claves se repita dentro de tabla, ya que la clave primaria de esta, estara compuesta por 2 campos y el concepto de "clave unica" lo dara la combinatoria de valores de estos 2 campos y no cada uno por si solo
|
Hasta donde entiendo, cuando se crea mas de una clave primaria en una tabla, es decir, mas de un campo formara la clave principal. La conformacion de un valor unico es la combinacion de dichos campos y no cada uno por si solo, por ejemplo, en la definicion de esta tabla:
Código SQL
[-]
CREATE TABLE SUBMODULOSUSUARIOS (
CODIGOSUBMODULO CODIGO_CORTO NOT NULL,
CODIGOMODULO CODIGO_CORTO NOT NULL,
CODIGOPERFIL CODIGO_CORTO NOT NULL,
ATRIBUTO TIPO_ATRIBUTO NOT NULL,
ORDEN INTEGER NOT NULL);
ALTER TABLE SUBMODULOSUSUARIOS ADD CONSTRAINT PK_SUBMODULOSUSUARIOS PRIMARY KEY (CODIGOSUBMODULO, CODIGOMODULO, CODIGOPERFIL);
Existen 3 campos claves,
CODIGOSUBMODULO, CODIGOMODULO, CODIGOPERFIL, 2 registros direrectes para esta tabla podrian ser:
Código Delphi
[-]
TSubModulosBD.Insert;
TSubModulosBD.FieldValues['CODIGOSUBMODULO']:='U1';
TSubModulosBD.FieldValues['CODIGOMODULO']:='H1';
TSubModulosBD.FieldValues['CODIGOPERFIL']:='P1'
TSubModulosBD.FieldValues['ORDEN']:=1;
TSubModulosBD.Post;
TSubModulosBD.Insert;
TSubModulosBD.FieldValues['CODIGOSUBMODULO']:='U1';
TSubModulosBD.FieldValues['CODIGOMODULO']:='H2';
TSubModulosBD.FieldValues['CODIGOPERFIL']:='P3'
TSubModulosBD.FieldValues['ORDEN']:=1;
TSubModulosBD.Post;
Si te fijas en los dos el valor de CODIGOSUBMODULO=U1, pero como los demas valores de los campos primarios son diferentes, en las 2 inserciones, el motor los toma como claves primarias diferentes.
Lo que yo quiero es que cada valor de cada campo que conforme la clave primaria de una tabla, sea unico.
Espero hacer sido mas explicito
Saludos....