Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 16-11-2004
senpiterno senpiterno is offline
Miembro
 
Registrado: abr 2004
Posts: 112
Poder: 23
senpiterno Va por buen camino
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....

Última edición por senpiterno fecha: 16-11-2004 a las 20:42:31.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:59:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi