![]() |
Procedimiento almacenado + condicion
Hola, muy buenas.Utilizo Firebird 2.0, y quiero utilizar un procedimiento almacanado para guardar un registro en la tabla "CLAVES".
Utilizo esto... no puedo ocupar la herramiento para escribir texto 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 SELECT coalesce(MAX(ID_USUARIO),0) + 1 FROM CLAVES INTO ID; INSERT INTO claves (ID_USUARIO, USUARIO, CLAVE, NOMBRE, EMAIL, RUT, NACIMIENTO) VALUES (:ID, :USUARIO, :CLAVE, :NOMBRE, :EMAIL, :RUT, :NACIMIENTO); end Con esto tengo resuelto el problema de la columna con clave primaria "ID_USUARIO", ahora bien puede ocurrir que se ingresen mas de un registro iguales para la columna "USUARIO", lo cual no está bien, pero tampoco me va a generar un problema en la BD, ya que tengo la clave primaria distinta. Por otro lado quise utilizar una clave primaria compuesta por los campos ID_USUARIO Y USUARIO, tampoco me sirve.Entonces se me ocurrio la idea de agregar una consulta en el procedimiento, que cheque antes de guardar el registro, si existe un registro con el mismo campo "USUARIO", en caso que si existe me arroje un mensaje... como se puede hacer esto?? Espero me puedan ayudar. |
Amigo te reocmiendo hacer lo siguiente:
1) Si deseas tener un valor correlativo para ID_USUARIO, utiliza un generador para ese campo.
2) Te recomiento que uses una clave unica para el campo USUARIO, asi no tendrias usuarios repetidos.
3) Para controlar que solo se ingrese un usuario unico podrias usar una exception
Olvide incluir tu codigo Bueno eso por ahora, espero te sirva... Un abrazo |
| La franja horaria es GMT +2. Ahora son las 06:30:01. |
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