Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/07/2009, 19:56
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 3 meses
Puntos: 2658
Respuesta: dos auto_increment claves?

Suponiendo que estás trabajando en MySQL, te diré:
Tal y como lo has planteado, la segunda no es exactamente un autoincremental, por cuanto se reiniciaría con el cambio de la primera clave en un dígito.
En ese caso existen al menos tres formas de manejarlo: O lo haces en la aplicación, o creas un TRIGGER que vaya creando los valores en la medida que se hacen las inserciones, o bien -si la lista completa proviene de una consulta- creas la lista de valores a través de una suconsulta con variables de usuario.
En segundo caso sería algo parecido a esto:
Código sql:
Ver original
  1. DROP TRIGGER IF EXISTS SET_ITEMSREPMENSVH;
  2. DELIMITER $$
  3. CREATE TRIGGER SET_ITEMSREPMENSVH BEFORE INSERT
  4. ON ITEMPSRMVEHICULO
  5. FOR EACH ROW
  6. BEGIN
  7.     IF(SELECT MAX(ITEMPREPMENS) FROM ITEMPSRMVEHICULO WHERE IDREPMENS = NEW.IDREPMENS) IS NULL THEN
  8.         SET NEW.ITEMPREPMENS=1;
  9.     ELSE
  10.         SET NEW.ITEMPREPMENS=(SELECT MAX(ITEMPREPMENS) FROM ITEMPSRMVEHICULO WHERE IDREPMENS = NEW.IDREPMENS)+1;
  11.     END IF;
  12. END$$
  13.  
  14. DELIMITER ;
En este ejemplo, el campo ITEMPREPMENS se debe ingresar con valor cero (0), para poder manipularlo en el TRIGGER.

El tercer caso sería parecido a esto:
Código sql:
Ver original
  1. INSERT INTO tabla2(Id2, c1, c2, c3)
  2. SELECT
  3.     (@REG := @REG + 1) Linea,
  4.     Campo1,
  5.     Campo2,
  6.     Campo3
  7. FROM
  8.     (SELECT
  9.         @REG :=0,
  10.         Campo1,
  11.         Campo2,
  12.         Campo3
  13.     FROM Tabla1) Tabla2;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)