Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 03-11-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 947
Poder: 25
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Amigo te reocmiendo hacer lo siguiente:

1) Si deseas tener un valor correlativo para ID_USUARIO, utiliza un generador para ese campo.

Código SQL [-]

CREATE GENERATOR GEN_USUARIOS_ID;    
SET GENERATOR GEN_USUARIOS_ID TO 0;

CREATE TRIGGER USUARIOS_BI FOR USUARIOS
ACTIVE BEFORE INSERT POSITION 0                   
AS                                                
BEGIN                                             
     IF (NEW.ID_USUARIO IS NULL) THEN                
        NEW.ID_USUARIO = GEN_ID(GEN_USUARIOS_ID,1);
END

2) Te recomiento que uses una clave unica para el campo USUARIO, asi no tendrias usuarios repetidos.
Código SQL [-]
ALTER TABLE USUARIOS ADD CONSTRAINT UNQ1_USUARIOS UNIQUE (USUARIO);

3) Para controlar que solo se ingrese un usuario unico podrias usar una exception
Código SQL [-]
CREATE EXCEPTION ERROR_KEY_VIOLATION 
'Usuario ya existe!';

CREATE TRIGGER USUARIOS_BI FOR USUARIOS
ACTIVE BEFORE INSERT POSITION 0                   
AS                                                
BEGIN                                             
     IF (NEW.ID_USUARIO IS NULL) THEN                
        NEW.ID_USUARIO = GEN_ID(GEN_USUARIOS_ID,1);

    WHEN SQLCODE -803 DO        
             EXCEPTION ERROR_KEY_VIOLATION;
END

Olvide incluir tu codigo
Código SQL [-]
CREATE OR ALTER PROCEDURE INGRESO_USUARIO (USUARIO varchar(4),
      CLAVE varchar(8),
      NOMBRE varchar(35),
      EMAIL varchar(50),
      RUT varchar(50),
      NACIMIENTO date) asdeclare variable ID integer;
BEGIN
       --Estaria de mas por lo mensionado en el punto 1
       --SELECT coalesce(MAX(ID_USUARIO),0) + 1 FROM CLAVES INTO ID;

       INSERT INTO claves (ID_USUARIO, USUARIO, CLAVE, NOMBRE, EMAIL, RUT, NACIMIENTO) VALUES (NULL , :USUARIO, :CLAVE, :NOMBRE, :EMAIL, :RUT, :NACIMIENTO);
END
Bueno eso por ahora, espero te sirva...

Un abrazo
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
procedimiento almacenado JAI_ME Varios 5 02-09-2008 16:24:58
procedimiento almacenado lurad Oracle 2 01-03-2008 05:05:25
Procedimiento Almacenado rruffino Conexión con bases de datos 1 25-04-2007 18:52:51
Procedimiento Almacenado scooterjgm Conexión con bases de datos 5 18-01-2005 18:21:32
Procedimiento almacenado y Ado LucianoRey MS SQL Server 11 06-07-2004 22:55:23


La franja horaria es GMT +2. Ahora son las 15:27:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi