PDA

Ver la Versión Completa : consecutivo no trigger


el_barto
21-06-2005, 21:12:05
Hola foro, de los millones de problemas que tengo en mi base ahora me surge uno que me impide trabajar...:( Resulta que tengo una tabla que se llama producto y otra que es subproducto el producto maneja codigos de identificacion como 100, 200, 300 pero el subproducto se identifica con el codigo del producto y se le agregaun indicador por ejemplo

CODIGO ITEM NOMBRE
100 1 TELEFONO SAMSUNG
100 2 TELEFONO KYOCERA
100 3 TELEFONO SONY

el campo item lo intente generar con un tigger pero ocurre un problema si yo he creado los 3 registros mostrados en el ejemplo anterior y deseo crear un codigo nuevo por decir 200 miren lo que pasa:

CODIGO ITEM NOMBRE
200 4 TELEVISOR SAMSUNG
200 5 TELEVISOR KYOCERA

Como podria hacer para que item sea generado automaticamente pero que tome en cuenta el codigo y cuando sea un nuevo codigo empiece desde uno y cuando no sea nuevo entonces tome el ultimo valor y se incremente

UFFF le agradeceria a cualquiera que me pudiera ofrecer una solucion

jachguate
21-06-2005, 22:49:00
Podes, siempre en un trigger, buscar el mayor que se corresponda con el rango y le sumas uno.

Hasta luego.

;)

el_barto
21-06-2005, 23:38:45
:eek: Se Puede Hacer Eso :eek: los huevos¡¡¡¡ no sabiaaaa, pero tendria que tener en cuenta el codigo del producto tambien verdad?? :confused: , bueno no tengo ni idea de como se hace pero voy a intentar

afxe
22-06-2005, 10:22:07
Voy a suponer que trabajas con Interbase/Firebird:

En el trigger BEFORE INSERT haz algo parecido a esto:


AS
DECLARE VARIABLE MaxItem INTEGER;
BEGIN
SELECT MAX(ITEM) FROM SUBPRODUCTOS
WHERE CODIGO = NEW.CODIGO
INTO :MaxItem;
NEW.ITEM = MaxItem + 1;

END


Espero haberte ayudado y que el mensaje salga bien... soy nuevo en esto.

el_barto
22-06-2005, 15:04:37
Gracias viejo lo acomode a mi necesidad y sale muy bien

Bienvenido¡¡¡¡

Juanito-Kun
08-07-2005, 19:00:45
Hola que tal...

En SQL server como quedaria.. tienen alguna idea..


Gracias y Saludos...



;)

jachguate
11-07-2005, 16:52:23
La idea sigue siendo válida, solo hay que "pensarla" en TSQL.

Hasta luego.

;)