Insertar datos no repetidos

Iniciado por .:UND3R:., 21 Agosto 2016, 05:54 AM

0 Miembros y 1 Visitante están viendo este tema.

.:UND3R:.

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:

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:

Citar2   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:
Citar2   4   2   3   Heliacal Sword

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

PD: Microsoft SQL Server

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

dopr

#1
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.

WHERE i_type <> typeactual AND i_id <> idactual

Espero que te sirva.
High Hopes.

AlbertoBSD

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.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

dopr

Cita de: AlbertoBSD en 22 Agosto 2016, 04:15 AM
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):


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


High Hopes.

AlbertoBSD

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,
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

user-marcos

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