elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Insertar datos no repetidos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Insertar datos no repetidos  (Leído 2,382 veces)
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Insertar datos no repetidos
« en: 21 Agosto 2016, 05:54 »

Hola a todos, tengo un pequeño problemita, tengo una tabla la cual ya está con muchos datos, el problema surge que deseo insertar más datos pero el problema de estos es que hay algunos repetidos, la única manera de poder diferenciar estos es a través de los campos i_type y i_id juntos:

Código:
i_type i_id size_x size_y name
0 0 1 2 Kris
0 1 1 3 Short Sword
0 2 1 3 Rapier
0 3 1 3 Katana
0 4 1 3 Sword of Assassin
1 1 1 3 Blade
1 2 1 3 Gladius
1 3 1 3 Falchion
1 4 1 3 Serpent Sword
2 1 2 3 Sword of Salamander
2 2 2 4 Light Saber
2 3 2 3 Legendary Sword
2 4 2 3 Heliacal Sword
0 5 1 3 Double Blade
.......
....
.

Mi idea es la siguiente:

Insertar los datos solo si no existe una fila con un i_type y i_id igual, ¿cómo podría hacer esto? Es decir que si insertara esto:

Citar
2   4   1   5   Sword Black

no se debería insertar pues ya existe una fila en la tabla que posee un 2 y un 4:
Citar
2   4   2   3   Heliacal Sword

No sé si se entienda, espero su ayuda, muchas gracias :)

PD: Microsoft SQL Server


En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
dopr

Desconectado Desconectado

Mensajes: 42



Ver Perfil
Re: Insertar datos no repetidos
« Respuesta #1 en: 22 Agosto 2016, 03:59 »

No entiendo mucho de bases de datos, y menos de MS SQL Server pero intenta algo como añadir un WHERE al final de la consulta, que solo inserte los datos cuando i_type y i_id no sean iguales a los del registro que se está intentando crear.

Código:
WHERE i_type <> typeactual AND i_id <> idactual

Espero que te sirva.


« Última modificación: 22 Agosto 2016, 04:01 por dopr » En línea

High Hopes.
AlbertoBSD
Programador y
Colaborador
***
Desconectado Desconectado

Mensajes: 3.472


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Insertar datos no repetidos
« Respuesta #2 en: 22 Agosto 2016, 04:15 »

La idea quw se me ocurre pero que no se si se pueda implementar es hacer que la tabla tenga un campo "unico" y que este se genere en automatico al realizar el insert con la concatenación de los 2 datos mencionados y si este ya existe no se insertara, tal vez se pueda manejar con triggers o similar.
En línea

dopr

Desconectado Desconectado

Mensajes: 42



Ver Perfil
Re: Insertar datos no repetidos
« Respuesta #3 en: 22 Agosto 2016, 14:32 »

La idea quw se me ocurre pero que no se si se pueda implementar es hacer que la tabla tenga un campo "unico" y que este se genere en automatico al realizar el insert con la concatenación de los 2 datos mencionados y si este ya existe no se insertara, tal vez se pueda manejar con triggers o similar.

Puedes hacer una clave primaria autoincrementable (Seria como otro id más, pero asignado automáticamente por la BBDD):

Código:
CREATE TABLE ejemplo (
 id_unico mediumint(8) unsigned default null auto_increment,
 -- los campos que tu quieras...
 PRIMARY KEY (id_unico)
);

En línea

High Hopes.
AlbertoBSD
Programador y
Colaborador
***
Desconectado Desconectado

Mensajes: 3.472


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Insertar datos no repetidos
« Respuesta #4 en: 22 Agosto 2016, 14:35 »

El usuario comenta que tiene que ser unico solo si 2 valores coinciden

Citar
Insertar los datos solo si no existe una fila con un i_type y i_id igual,
En línea

user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: Insertar datos no repetidos
« Respuesta #5 en: 22 Agosto 2016, 14:46 »

Has probado en usar una clave primaria de dos campos;
primary key (i_type, i_id size_x)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines