![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Opino igual que los compañeros, aunque no es obligatorio es muy conveniente tener una clave primaria.
Todo parece indicar que el problema es la falta de clave primaria. El mensaje de error es muy claro : "Ya hay al menos un registro con los mismos valores en los campos". ¿ Como podría el motor distinguir dos registros con exactamente los mismos valores, sin al menos una clave primaria que los permita identificar de forma única ?. La solución es sencilla, como te dicen solo tienes que añadir una clave primaria. Puedes hacer que se rellene mediante un generador y un sencillo trigger, de esta forma no tendrás que tocar para nada tu aplicación, podrás seguir insertando registros exactamente igual a como venías haciéndolo hasta ahora, y lo mismo para su consulta. Última edición por guillotmarc fecha: 22-01-2010 a las 13:47:46. |
|
#2
|
||||
|
||||
|
Vaya, veo que ya habéis solucionado ese error.
Respecto a lo del integer y numeric. ¿ Estás usando los campos existentes para definir la clave primaria ?. No lo hagas, puesto que no puedes asegurar que tengan valores únicos (requisito de cualquier clave primaria). Simplemente añade un campo nuevo, de tipo integer, como dice Casimiro, y asígnale su valor en un trigger (de forma que no tengas que tocar para nada tu aplicación). |
|
#3
|
||||
|
||||
|
Primero creas un "generator", ejemplo:
Código:
CREATE SEQUENCE GEN_lotes_salida_ID; ALTER SEQUENCE GEN_lotes_salida_ID RESTART WITH 0; /* Old syntax is: CREATE GENERATOR GEN_lotes_salida_ID; SET GENERATOR GEN_lotes_salida_ID TO 0; */ Código:
CREATE OR ALTER trigger trg_lotes_salida_bi0 for lotes_salida active before insert position 0 AS BEGIN NEW.id = GEN_ID(GEN_lotes_salida_ID,1); END
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#4
|
||||
|
||||
|
Gracias Casimiro, lo intentare la semana que viene, el problema es que en el ibexpert, no sabia como crear una clave primaria sobre una tabla existente, por cierto, como se puede duplicar los campos de una tabla en otro, se que se puede, pero no me acuerdo como?.
Por cierto Casimiro, el código expuesto, en que parte debería ponerlo?. Por cierto en el coche de camino a casa, pensando en por que me fallaba, creo que ya se la razón, no he cambiado las sentencias con los nuevos campos en el IBdataset. Muchas gracias por vuestro apoyo
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" Última edición por José Luis Garcí fecha: 22-01-2010 a las 16:32:01. |
|
#5
|
||||
|
||||
|
Si usas un "Script", para crear la base de datos en el propio "Script", debe de encontrarse por debajo del lugar en donde se crea la tabla a la que afecta.
Si usas el IbExpert, pulsas en Triggers, botón derecho y eliges "New Trigger". Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
#6
|
||||
|
||||
|
]Como siempre teneis toda la razón, me funciona mejor con un campo integer y en cuanto al trigger, lo habia generado ya junto con el proceso y disparador, pero no sabia como aplicarlo a delphi hasta que encontre en el for esta solución
Conectar Trigger en Delphi Doy el Tema por Solucionado, y muchas gracias a todos
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Problemas con campos Numeric | edgusano | MS SQL Server | 2 | 25-05-2005 18:04:36 |
| Numeric (12, 4) en Delphi 7 | oliverinf | Firebird e Interbase | 3 | 18-12-2004 00:02:40 |
| Tipos de dato Numeric...??? | mguixot | OOP | 6 | 06-03-2004 23:03:32 |
| Valores en campos numeric | xerkan | Firebird e Interbase | 1 | 08-12-2003 20:41:43 |
| Dominio Numeric(2,0) siempre = 0 | apicito | Firebird e Interbase | 3 | 03-09-2003 00:18:56 |
|