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

No permite insertar Registros

Estas en el tema de No permite insertar Registros en el foro de SQL Server en Foros del Web. Hola amigos estoy trabajando con SQL Server 2000 y tengo el siguiente error al cargar datos a una tabla. El error es: Cita: Server: Msg ...
  #1 (permalink)  
Antiguo 05/06/2007, 12:58
 
Fecha de Ingreso: abril-2007
Mensajes: 13
Antigüedad: 17 años, 1 mes
Puntos: 0
No permite insertar Registros

Hola amigos estoy trabajando con SQL Server 2000 y tengo el siguiente error al cargar datos a una tabla.

El error es:
Cita:
Server: Msg 2627, Level 14, State 1, Line 1
Violation of PRIMARY KEY constraint 'PK_RHU_FT_LICENCIAS_MEDICAS'. Cannot insert duplicate key in object 'RHU_FT_LICENCIAS_MEDICAS'.
The statement has been terminated.
El problema es que algunos de los registros que voy a insertar ya se encuentran en la tabla de destino, mi problema es saber cuales son los registros que están duplicados ¿Que query me puede indicar los registros duplicados? siendo que las primary key son: cod_nro_licencia y cod_rut.

Query:
Cita:
INSERT INTO [RHU_FT_LICENCIAS_MEDICAS]([cod_nro_licencia], [fecha], [cod_rut],
[fecha_inicio_licencia], [fecha_termino_licencia])
(
SELECT [cod_nro_licencia], [fecha], [cod_rut], [fecha_inicio_licencia], [fecha_termino_licencia] FROM [STG_RHU_FT_LICENCIAS_MEDICAS])
¿Cuál es la query que me indica los registros duplicados? para corregir el problema...

Gracias.
  #2 (permalink)  
Antiguo 05/06/2007, 14:28
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Re: No permite insertar Registros

Código:
Insert into MiTabla (Campos)
Select S.Campos
From   MiSegundaTabla S
Left outer join
         MiTabla  T
On     s.CampoClave = t.CampoClave
Where  t.campoclave is null
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 05/06/2007, 15:05
 
Fecha de Ingreso: abril-2007
Mensajes: 13
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: No permite insertar Registros

Andres95 no entiendo mucho tú respuesta pero probe el query y funciona...

Pero tengo 2 llaves primarias cod_nro_licencia y cod_rut por tal ¿Cual es query para encontrar los duplicados entre estas dos tablas?

Gracias.
  #4 (permalink)  
Antiguo 06/06/2007, 10:02
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Re: No permite insertar Registros

ah ok.... el query que te envie es para que al momento de insertar la informacion, el insert no truene intentando insertar claves que ya existen....
es decir, el select solo obtiene las claves que aun no existen en la tabla...

lo puedes aplicar con mas de un campo en la llave primaria... solo ingresa todos los campos clave en el join y al menos uno en la clausula where...



Si queires obtener un resultset con las filas duplicadas, seria...
Código:
Select *
From miTabla
Group by 
       [campos que pueden repetirse]
Having
       count(1)> 1
saludos
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 06/06/2007, 10:31
 
Fecha de Ingreso: mayo-2007
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
Re: No permite insertar Registros

Lo siento... lo que sigue no pertenece a este foro..

Hola.. Necesito su ayuda por favor... Resulta que tengo tiempo tratando de introducir unos datos desde php a una base de datos que está construida en SQL Server... ¡Y no pueeeedo! Ya he buscado en tutoriales, manuales, códigos de SQL Server y de PHP y nada... He modificado mi código de mil maeras y no funciona.. Al revisar la Base de Datos me doy cuenta que está intacta... ¿Será que esto no se puede hacer o es que lo estoy haciendo mal?
Aquí les envío la manera actual en como lo estoy intentando:

require('conection/BD.php');
mssql_select_db($database,$BD);
$ayer = time() - (1 * 24 * 60 * 60);
"INSERT INTO [TablaDeDatos] (Identificador, Dato, Fecha) VALUES ('1','$_POST[Dato]','$ayer')";
mssql_close($BD);


Ahora les explico un poco: la Base de Datos la llamo mediante require, ya que tengo un código en la carpeta conection que me valida que la base de datos se conecte. Luego, como tengo que guardar los datos de hoy pero en el dia de ayer hago esa operación que guardo en la variable $ayer. Una vez hecho esto trato de insertar los datos (que es lo que no logro :( ) y cierro la BD.

Bien... Espero me puedan ayudar... De veras que lo necesito... Corríjanme si tengo algo (o todo) malo... Les agradezco de antemano toda la ayuda que me puedan ofrecer :)

Última edición por Eka Antuare; 07/06/2007 a las 07:38 Razón: No estoy en el foro correcto.
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 03:27.