Propiedad Identity para llave compuesta???
Publicado por eduardo (7 intervenciones) el 30/08/2013 20:52:32
Buenas. Tengo una duda. Cuando tenemos una tabla con llave primaria simple podemos establecer dicho campo con la propiedad IDENTITY(1,1) para que se vaya incrementando. Pero ¿qué pasa cuando la tabla tiene una llave compuesta?
Sucede que tengo un maestro-detalle y me he preguntado si existe la opción de hacer IDENTITY a la segunda llave. O es que debo crear una función que encuentra el máximo para cada valor de la primera llave, es decir, algo como lo siguiente:
De momento, esto me funciona pero me gustaría conocer una manera más óptima.
Saludos cordiales.
Sucede que tengo un maestro-detalle y me he preguntado si existe la opción de hacer IDENTITY a la segunda llave. O es que debo crear una función que encuentra el máximo para cada valor de la primera llave, es decir, algo como lo siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE FUNCTION F_OBTSIGUIENTECORRELATIVO
(
@PRIMERA_LLAVE INT
)
RETURNS INT
BEGIN
DECLARE @SEGUNDA_LLAVE INT
IF NOT EXISTS(SELECT 1 FROM TABLA_MAESTRA
WHERE CODIGO = @PRIMERA_LLAVE)
RETURN NULL
SELECT
@SEGUNDA_LLAVE = COALESCE(MAX(SEGUNDA_LLAVE),0) + 1
FROM TABLA_DETALLE
WHERE PRIMERA_LLAVE = @PRIMERA_LLAVE
RETURN @SEGUNDA_LLAVE
END
De momento, esto me funciona pero me gustaría conocer una manera más óptima.
Saludos cordiales.
Valora esta pregunta


0