| ||||
Respuesta: Identity en mysql? Dos tablas con valores de id diferentes IDENTITY es un tipo de campo que no pertenece a MySQL, por lo que no podrás usarlo. Por otro lado, cada PK de cada tabla es, por definición, única para cada tabla. Lo que sería bueno es que nos explicases cómo estás usando esas dos claves de tablas distintas para necesitar que tengan valores diferentes. ¿Qué problema se produce y qué es lo que estás tratando de hacer?
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Identity en mysql? Dos tablas con valores de id diferentes Seguramente esté mal diseñado, pero no puedo cambiar las tablas (lo que es la estructura) así a las bravas (es tema del curro). Tengo dos tablas con productos, cada una tiene una serie de atributos diferente, solo comparten 3: id, nombre e imagen del producto. Luego tengo una tercera tabla que es una cesta de la compra que basicamente lo que tiene es la id del producto comprado y la id de la cesta. En la cesta puedo insertar productos de cualquiera de las dos tablas. |
| ||||
Respuesta: Identity en mysql? Dos tablas con valores de id diferentes Ya veo. El problema que tienes es que la estructura de "productos" está mal diseñada. El hecho que tengas diferentes tipos de productos con diferentes atributos no significa solamente que esos atributos requieren tablas distintas, significa que tienes una jerarquía (herencia), que en tu caso se diseña poniendo: Cita: Donde ,todos los productos se identifican en la misma tabla, pero los detalles de categoría o tipo se ponen en tablas dependientes, cuya PK es heredada de la tabla principal (FK).PRODUCTO(producto_id, nombre, imagen_file) PRODUCTO_1(producto_id, ....) PRODUCTO_2(producto_id, ....) ... Esto te puede dar una idea de cómo se diseña una jerarquía (este es algo complejo, pero sirve): ![]() Infortunadamente dices que no lo puedes modificar para corregir el error (bastante serio, como verás por el problema que te causa). En ese caso lo único que te resta hacer es agregarle a la cesta un campo adicional que te permita identificar la tabla de origen, pero eso te exigirá luego gestionar los detalles de las consultas a través de programación en la aplicación web... Hubiese sido más fácil modificar la base. ¿No hay posibilidades de convencer al que lo dirige?
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Identity en mysql? Dos tablas con valores de id diferentes Lo voy a intentar porque esto traerá problemas posteriores cuando se añadan nuevos productos. Gracias de todas maneras, el identity lo hubiese resuelto, aunque hubiese sido solo un apaño. |
| ||||
Respuesta: Identity en mysql? Dos tablas con valores de id diferentes Para usar algo semejante a un IDENTITY tienes que olvidarte de las PK numéricas y autoincrementales. Tienes que volver a la definición de PK del modelo E-R y usarla al pie de la letra. En el caso de los productos bien puedes usar el código correspondiente al EAN13 (código de barras). Con ése jamás tendrás repeticiones.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Identity en mysql? Dos tablas con valores de id diferentes Una manera de hacerlo (aunque es un parche, la manera buena ya te la han explicado) es crear una tabla que sea un contador e insertar el valor que tenga esa tabla. Al hacer un insert en cualquiera de las tablas de productos, con un trigger, aumentas ese contador que siempre contendrá el primer ID libre para tus productos. |
| ||||
Respuesta: Identity en mysql? Dos tablas con valores de id diferentes No se puede cambiar porque por lo visto la parte de administrador (la que inserta productos nuevos) ya está implementada y es un jaleo, habría que cambiarlo todo. Lo del código de barras puede ser una idea. |
Etiquetas: |