Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Trigger o Fórmula

Estas en el tema de Trigger o Fórmula en el foro de SQL Server en Foros del Web. Hola a todos: Intento que un campo de una tabla genere un elemento único (clave candidata) cada vez que se inserta un registro Pruebas . ...
  #1 (permalink)  
Antiguo 09/09/2009, 05:45
 
Fecha de Ingreso: junio-2007
Mensajes: 41
Antigüedad: 17 años, 5 meses
Puntos: 0
Trigger o Fórmula

Hola a todos:

Intento que un campo de una tabla genere un elemento único (clave candidata) cada vez que se inserta un registro

Pruebas . ID_PRUEBA (Clave principal - AUTOINC)
Pruebas . CLAVECANDIDATA (Índice UNIQUE)

Se me ocurre crear un TRIGGER: (Que no funciona...)

Se me ocurre creaar una Fórmula para el campo CLAVECANDIDATA (Que no se como...)

¿Alguna idea de como soluccionar este embrollo?
Seguro que si...

Muchas gracias por adelantado.
Un cordial saludo.
Ángel I.
  #2 (permalink)  
Antiguo 09/09/2009, 08:53
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Trigger o Fórmula

Un ejemplo de como quedarian tus registros???
  #3 (permalink)  
Antiguo 09/09/2009, 10:21
 
Fecha de Ingreso: junio-2007
Mensajes: 41
Antigüedad: 17 años, 5 meses
Puntos: 0
Busqueda Respuesta: Trigger o Fórmula

Hola iislas:

Muchas gracias por contestar. Los datos quedarían tipo:

ID_PRUEBA CLAVECANDIDATA
1 80001
2 80002
3 80003
4 99991

ID_PRUEBA es autoincremental

CLAVECANDIDATA es un valor único el cual yo ofrezco automático al insertar calculado, aunque el usuario puede modificarlo.

He creado un TRIGGER que parece que funciona:

CREATE TRIGGER [dbo].[ClaveCandidata]
ON [dbo].[Pruebas]
AFTER INSERT
AS
BEGIN
DECLARE @nMax int
DECLARE @nID int
SET @nID = @@IDENTITY
SELECT @nMax = ISNULL(MAX(Pruebas.CLAVECANDIDATA), 0) FROM Pruebas
UPDATE Pruebas SET CLAVECANDIDATA = @nMax + 1 WHERE Pruebas.ID_PRUEBA = @nID
END

¿Que opinión tienes sobre esto iislas?
Gracias.
  #4 (permalink)  
Antiguo 09/09/2009, 11:52
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Trigger o Fórmula

Con ese trigger, tendria exactamente el mismo valor que ID_PRUEBA, mientras que en tu ejemplo veo que agregas un 8000 y al final un 9000, ¿porque no optas por un campo calculado?
  #5 (permalink)  
Antiguo 10/09/2009, 01:28
 
Fecha de Ingreso: junio-2007
Mensajes: 41
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Trigger o Fórmula

Hola de nuevo iislas:

Gracias por contestar. Intentaré explicar mejor lo que pretendo:

Intento que la tabla Clientes contenga un ID_CLIENTE interno con el que realizo las relaciones de la DB el cual es autoincremental y llave principal.
Además pretendo que la tabla Clientes tenga un campo CODIGO. El cual tambien debe ser único. Este campo CODIGO es para el usuario de la aplicación. Con este campo identifica de manera única un Cliente.

Clientes.ID_CLIENTE
Clientes.CODIGO

El ID_CLIENTE lo gestiona SQL Server
El Codigo lo gestiono yo por código y por trigger. Me explico:

Tenemos lo siguiente:

Clientes.ID_CLIENTE = 1
Clientes.CODIGO = 1 -- lo modifica el trigger al insertar
------
Clientes.ID_CLIENTE = 2
Clientes.CODIGO = 2 -- lo modifica el trigger al insertar
------
Clientes.ID_CLIENTE = 3
Clientes.CODIGO = 15001 -- lo ha modificado el usuario
------
Clientes.ID_CLIENTE = 4
Clientes.CODIGO = 36005 -- lo ha modificado el usuario
------
Clientes.ID_CLIENTE = 5
Clientes.CODIGO = 50001 -- lo ha modificado el usuario
------
Clientes.ID_CLIENTE = 5
Clientes.CODIGO = 50002 -- lo modifica el trigger al insertar
------
Clientes.ID_CLIENTE = 6
Clientes.CODIGO = 50003 -- lo modifica el trigger al insertar

Cuando inserto un registro en Clientes cumplimento automáticamente el CODIGO pero el usuario puede modificar ese código siempre y cuando no produzca uno existente.

Bueno, espero haber explicado mejor lo que pretendo.
¿Ahora que me recomendarías [iislas]?

¿Utilizar el trigger que he diseñado, o realizarle modificadiones?
¿Utilizar una fórmula? - ¿Cómo sería la fórmula (lo he intentado y no me sale)?

Muchas gracias.
Ángel I.
  #6 (permalink)  
Antiguo 10/09/2009, 15:57
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Trigger o Fórmula

Tal vez sea muy complicado lo que buscas o de verdad que NO entiendo.

Dices: "El Codigo lo gestiono yo por código y por trigger."

Y luego en tu ejemplo, colocas: "Clientes.CODIGO = 50001 -- lo ha modificado el usuario"

¿Entonces?, o es el trigger, o es el usuario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:29.