SQL - Consulta SQL

 
Vista:

Consulta SQL

Publicado por Sagoh (4 intervenciones) el 26/07/2006 08:58:15
Hola a todos, a ver si alguien me puede echar una mano.
Resulta que tengo una tabla con los campos id y login, el id es la clave primaria, pero el login tiene que ser unico.
Como hago para insertar en la tabla una tupla sólo cuando el login no esta ya en esa tabla? GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta SQL

Publicado por agp (5 intervenciones) el 26/07/2006 09:36:09
Puedes hacer un contador sobre la tabla antes de la inserción.
select count(0)
into v_cont
from tabla
where login = 'xxx';
Si el v_cont > 0 es que ya existe y si es = 0 es que no existe.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL

Publicado por sagoh (4 intervenciones) el 26/07/2006 09:42:05
Gracias, pero una pregunta, eso significaria tener q crear un campo mas para la tabla q fuera el contador??? es decir la tabla seria asi???:

id login v_cont
1 pepe 1
2 ramon 1

o como? me lo puedes explicar un poco? muchas gracias!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL

Publicado por agp (5 intervenciones) el 26/07/2006 09:47:16
No hace falta que crees ese campo en tabla. Solo es una variable que puedes crearte dentro del procedimeitno o funcion que ejecutes. Por ejemplo
declare
v_cont number;
begin
select count(0)
into v_cont
from tabla
where login = 'XXX';
if v_cont = 0 then
....
else
....
end if;
end;
Espero que esto te valga. ¿me he explicado mejor?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL

Publicado por sagoh (4 intervenciones) el 26/07/2006 09:58:51
creo que al final voy a hacer algo asi:

select count(*) as existe
from dominios
where login='.$login.'

y despues dire algo asi:

if (existe>0) entonces no hago nada
else inserto.

pero tengo una duda...'existe' es una variable???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL

Publicado por agp (5 intervenciones) el 26/07/2006 14:33:01
Si, es una variable.

Luego se me ha ocurrido otra solución. Puedes usar una de las exceptions de oracle. Haces el insert y si te da la excepción es porque el registro ya existe y no haces nada:

insert into dominios
(login, .....)
values
('xxx',........);

exception
when dup_val_index then null;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL

Publicado por Isaías (5072 intervenciones) el 26/07/2006 18:33:01
Supongo que haras un store procedure, claro, si hablas de SQL Server.

IF EXISTS(SELECT login FROM TuTabla WHERE login = @myParametroLogin)
BEGIN
SELECT 'ERROR'
RETURN(0)
END
ELSE
BEGIN
INSERT...............................

EN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar