Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

dos auto_increment claves?

Estas en el tema de dos auto_increment claves? en el foro de Bases de Datos General en Foros del Web. Tengo que realizar una modificacion en tabla de datos donde: tipo_s char(1) not null, folio_r int(7) auto_increment primary key Ahora necesito folios distintos segun el ...
  #1 (permalink)  
Antiguo 07/07/2009, 15:00
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 7 meses
Puntos: 1
dos auto_increment claves?

Tengo que realizar una modificacion en tabla de datos donde:

tipo_s char(1) not null,
folio_r int(7) auto_increment primary key


Ahora necesito folios distintos segun el tipo_s
si tipo_s = R incrementar folio_r
si tipo_s = S || tipo_s = G incrementar folio_s

es posible tener dos campos auto_increment como claves.

si es asi, como se logra hacer esto?

¿
tipo_s char(1) not null,
folio_r int(7) auto_increment primary key
folio_s int(7) auto_increment primary key
?
  #2 (permalink)  
Antiguo 07/07/2009, 15:35
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: dos auto_increment claves?

No se puede tener dos auto_increment, Solo uno y debe ser un primary key.
Saludos
__________________
Cansado de tener que hacer webs con doble login, o no entender nada del codigo de phpBB? Usa un sistema de foros simple, usa Linken Foros
  #3 (permalink)  
Antiguo 07/07/2009, 15:58
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 8 meses
Puntos: 49
Respuesta: dos auto_increment claves?

como dice kenichi no se puede, la pregunta es, es necesario?
digo si no se puede es por algo, revisa bien lo que quieres hacer y verifica no tengas duplicas de datos

saludos...
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #4 (permalink)  
Antiguo 07/07/2009, 19:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: dos auto_increment claves?

Tema trasladado desde PHP
  #5 (permalink)  
Antiguo 07/07/2009, 19:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 6 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)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:10.