Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 26-07-2010
Gallosuarez Gallosuarez is offline
Miembro
 
Registrado: feb 2007
Posts: 92
Poder: 20
Gallosuarez Va por buen camino
Talking Opinión personal...

dant:

Según mi opinión personal, lo que estás tratando de hacer es un poco ineficiente. Mira yo lo haría de la siguiente forma:
1.- Crear mi base de datos con el siguiente juego de caracteres: ISO8859_1 (que es el juego de caracteres para la mayoría de los idiomas occidentales, incluyendo el Español, por supuesto).
2.-Crear los campos de Nombre, Apellido Paterno y Apellido Materno con el juego de caracteres mencionado arriba y utilizar el siguiente collate: ES_ES_CI_AI (Español de España, Caracter Insensitive, Accent Insentive), es decir tus campos no van a ser sensibles a mayúsculas ni minúsculas ni a los acentos. Por ejemplo, el siguiente nombre: Gerardo Suárez Trejo, sería exactamente igual a GERARDO Suarez Trejo (me explico, no importan las mayúsculas ni los acentos).
3.- Crear un campo computado con la concatenación de Apellido Paterno + Apellido Materno + Nombre (puedes calcular este campo con las valores antes capturados y es mucho mas cómodo para los usuarios).
4.- Creas un índice con el campo calculado (tu búsquedas sería de lo mas rápido que puedas imaginar, incluso puedes hacer búsquedas parciales, por ejemplo nombre_cmplto = 's', o nombre_cmplto = 'sua', etc. (la búsqueda automáticamente utilizaría el índice antes mencionados lo cual nos traería muchos beneficios en cuanto a velocidad se refiere).
5.-Creas un disparador (trigger before insert or update), y aquí haces una búsqueda para saber si existe el nombre_cmplto antes de hacer la inserción en la BD)
anexo un pequeño ejemplo que hice para una Escuela.
Código SQL [-]
CREATE OR ALTER trigger alumnos_biu0 for alumnos
active before insert or update position 0
AS
BEGIN
  IF(NEW.ID IS NULL) THEN
    NEW.ID = GEN_UUID();
  /* Quita espacios en blanco al inicio y al final del campo */
  NEW.NOMBRE = TRIM(NEW.NOMBRE);
  /* Quita espacios en blanco y se asegura que los Apellidos no contengan un valor NULL */
  NEW.A_PATERNO = COALESCE(TRIM(NEW.A_PATERNO), '');
  NEW.A_MATERNO = COALESCE(TRIM(NEW.A_MATERNO), '');
  /* No permite que haya Alumnos repetidos */
  IF (EXISTS(
    SELECT 1
    FROM ALUMNOS
    WHERE NEW.ID <> ID AND NEW.NOMBRE_CMPLTO = NOMBRE_CMPLTO)) THEN
      EXCEPTION ALUMNO_REPETIDO;
END

Saludos,
Gerardo Suárez Trejo

PD. No dejes de platicarnos como te fue...
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 de DBF a FireBird sierraja Firebird e Interbase 4 05-09-2007 19:04:41
ejecutar Procedimiento almacenado en SQL Server, Intraweb. Roilo Internet 9 25-07-2007 18:01:32
Ejecutar Procedimiento Almacenado en Trigger AGAG4 SQL 16 21-09-2004 03:27:47
Ejecutar un Procedimiento almacenado saul saldaña MS SQL Server 1 03-08-2004 21:20:30
Como Ejecutar Un Query Desde Un Procedimiento Almacenado multisof Firebird e Interbase 2 04-11-2003 06:15:28


La franja horaria es GMT +2. Ahora son las 21:47:22.


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