Clave candidata repetida

19/09/2007 - 23:20 por Jose Luis | Informe spam
Hola tengo una clave con una clave primaria y otra clave alternativa
(candidata). Esta ultima es digitada por el usuario. Como es normal no
debe repetirse por tanto le puse un Constraint UNIQUE en la base de datos.
Cuando el usuario trata de introducir una clave repetida en la candidata me
da el mensaje pero el usuario me dice que no ve en cual registro (PK) es que
esta repetida.

Como puedo mostrarle al usuario la clave primaria correspondiente donde ya
existe la clave candidata que se esta digitando?

SS2000

Jose Luis

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera \(MVP\)
20/09/2007 - 00:39 | Informe spam
Qué programa está usando el usuario para introducir la clave?

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.

"Jose Luis" <x> wrote in message
news:%236sXxLw%
Hola tengo una clave con una clave primaria y otra clave alternativa
(candidata). Esta ultima es digitada por el usuario. Como es normal no
debe repetirse por tanto le puse un Constraint UNIQUE en la base de datos.
Cuando el usuario trata de introducir una clave repetida en la candidata
me da el mensaje pero el usuario me dice que no ve en cual registro (PK)
es que esta repetida.

Como puedo mostrarle al usuario la clave primaria correspondiente donde ya
existe la clave candidata que se esta digitando?

SS2000

Jose Luis

Respuesta Responder a este mensaje
#2 Jose Luis
20/09/2007 - 00:47 | Informe spam
Es un sistema en C# pero eso creo que no tiene importancia ya que ese tipo
de validaciones debe devolvermelas el servidor de datos.

Lo que me interesa es que la aplicacion me reciba el mensaje desde el
servidor de datos.

Jose Luis


"Gustavo Larriera (MVP)" wrote in message
news:eFoPr3w%
Qué programa está usando el usuario para introducir la clave?

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.Larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.

"Jose Luis" <x> wrote in message
news:%236sXxLw%
Hola tengo una clave con una clave primaria y otra clave alternativa
(candidata). Esta ultima es digitada por el usuario. Como es normal no
debe repetirse por tanto le puse un Constraint UNIQUE en la base de
datos. Cuando el usuario trata de introducir una clave repetida en la
candidata me da el mensaje pero el usuario me dice que no ve en cual
registro (PK) es que esta repetida.

Como puedo mostrarle al usuario la clave primaria correspondiente donde
ya existe la clave candidata que se esta digitando?

SS2000

Jose Luis





Respuesta Responder a este mensaje
#3 Alejandro Mesa
20/09/2007 - 02:08 | Informe spam
Jose Luis,

Estas tratando de insertar una nueva fila o estas actualizando la candidata
en una fila existente?


AMB

"Jose Luis" wrote:

Es un sistema en C# pero eso creo que no tiene importancia ya que ese tipo
de validaciones debe devolvermelas el servidor de datos.

Lo que me interesa es que la aplicacion me reciba el mensaje desde el
servidor de datos.

Jose Luis


"Gustavo Larriera (MVP)" wrote in message
news:eFoPr3w%
> Qué programa está usando el usuario para introducir la clave?
>
> Gustavo Larriera, Microsoft MVP
> https://mvp.support.microsoft.com/p...o.Larriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
> "Jose Luis" <x> wrote in message
> news:%236sXxLw%
>> Hola tengo una clave con una clave primaria y otra clave alternativa
>> (candidata). Esta ultima es digitada por el usuario. Como es normal no
>> debe repetirse por tanto le puse un Constraint UNIQUE en la base de
>> datos. Cuando el usuario trata de introducir una clave repetida en la
>> candidata me da el mensaje pero el usuario me dice que no ve en cual
>> registro (PK) es que esta repetida.
>>
>> Como puedo mostrarle al usuario la clave primaria correspondiente donde
>> ya existe la clave candidata que se esta digitando?
>>
>> SS2000
>>
>> Jose Luis
>>
>
>



Respuesta Responder a este mensaje
#4 Jose Luis
20/09/2007 - 03:05 | Informe spam
Puede ser ambas cosas. Lo que busco es un mensaje de error mas legible para
el usuario, ya he estado viendo que mejor lo pongo en un trigger para insert
y update, pensaba que se podia alterar el mensaje de error que me da al
violarse el Unique Constraint pero parece que no se puede segun he estado
escudriñando en la ayuda.

Gracias de todos modos.

Jose Luis


"Alejandro Mesa" wrote in message
news:
Jose Luis,

Estas tratando de insertar una nueva fila o estas actualizando la
candidata
en una fila existente?


AMB

"Jose Luis" wrote:

Es un sistema en C# pero eso creo que no tiene importancia ya que ese
tipo
de validaciones debe devolvermelas el servidor de datos.

Lo que me interesa es que la aplicacion me reciba el mensaje desde el
servidor de datos.

Jose Luis


"Gustavo Larriera (MVP)" wrote in message
news:eFoPr3w%
> Qué programa está usando el usuario para introducir la clave?
>
> Gustavo Larriera, Microsoft MVP
> https://mvp.support.microsoft.com/p...o.Larriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna
> clase.
>
> "Jose Luis" <x> wrote in message
> news:%236sXxLw%
>> Hola tengo una clave con una clave primaria y otra clave alternativa
>> (candidata). Esta ultima es digitada por el usuario. Como es normal
>> no
>> debe repetirse por tanto le puse un Constraint UNIQUE en la base de
>> datos. Cuando el usuario trata de introducir una clave repetida en la
>> candidata me da el mensaje pero el usuario me dice que no ve en cual
>> registro (PK) es que esta repetida.
>>
>> Como puedo mostrarle al usuario la clave primaria correspondiente
>> donde
>> ya existe la clave candidata que se esta digitando?
>>
>> SS2000
>>
>> Jose Luis
>>
>
>



Respuesta Responder a este mensaje
#5 Alejandro Mesa
20/09/2007 - 16:28 | Informe spam
Hola Jose Luis,

No puedes usar un trigger para eso. Las restricciones tienen prioridad ante
los triggers, por lo que si ocurre un error porque se esta violando la
restriccion, entonces el trigger no se dispara.

Ejemplo:

use tempdb
go

create table dbo.t1 (
c1 int not null unique
)
go

create trigger tr_t1_ins on dbo.t1
for insert
as
raiserror('pasé por aqui %s', 10, 1) with nowait
go

insert into dbo.t1 values(1)
go

insert into dbo.t1 values(1)
go

drop table dbo.t1
go


Una forma recomendable es hacer el insert y/o update mediante un
procedimiento almacenado y anter de hacer el insert o update, chequear la
existencia.

use tempdb
go

create table dbo.t1 (
c1 int not null unique
)
go

exec sp_addmessage 50001, 16, N'Error insertando en tabla dbo.t1, valor de
[c1] ya existente.'
go

create procedure dbo.usp_ins_t1
@c1 int
as
set nocount on

if exists (select * from dbo.t1 where c1 = @c1)
begin
raiserror (50001, 16, 1)
return -1
end
else
insert into dbo.t1(c1) values(@c1)

return 0
go

exec dbo.usp_ins_t1 1
go

exec dbo.usp_ins_t1 1
go

select * from dbo.t1
go

exec sp_dropmessage 50001
go

drop procedure dbo.usp_ins_t1
go

drop table dbo.t1
go


AMB


"Jose Luis" wrote:

Puede ser ambas cosas. Lo que busco es un mensaje de error mas legible para
el usuario, ya he estado viendo que mejor lo pongo en un trigger para insert
y update, pensaba que se podia alterar el mensaje de error que me da al
violarse el Unique Constraint pero parece que no se puede segun he estado
escudriñando en la ayuda.

Gracias de todos modos.

Jose Luis


"Alejandro Mesa" wrote in message
news:
> Jose Luis,
>
> Estas tratando de insertar una nueva fila o estas actualizando la
> candidata
> en una fila existente?
>
>
> AMB
>
> "Jose Luis" wrote:
>
>> Es un sistema en C# pero eso creo que no tiene importancia ya que ese
>> tipo
>> de validaciones debe devolvermelas el servidor de datos.
>>
>> Lo que me interesa es que la aplicacion me reciba el mensaje desde el
>> servidor de datos.
>>
>> Jose Luis
>>
>>
>> "Gustavo Larriera (MVP)" wrote in message
>> news:eFoPr3w%
>> > Qué programa está usando el usuario para introducir la clave?
>> >
>> > Gustavo Larriera, Microsoft MVP
>> > https://mvp.support.microsoft.com/p...o.Larriera
>> > Este mensaje se proporciona tal como es, sin garantías de ninguna
>> > clase.
>> >
>> > "Jose Luis" <x> wrote in message
>> > news:%236sXxLw%
>> >> Hola tengo una clave con una clave primaria y otra clave alternativa
>> >> (candidata). Esta ultima es digitada por el usuario. Como es normal
>> >> no
>> >> debe repetirse por tanto le puse un Constraint UNIQUE en la base de
>> >> datos. Cuando el usuario trata de introducir una clave repetida en la
>> >> candidata me da el mensaje pero el usuario me dice que no ve en cual
>> >> registro (PK) es que esta repetida.
>> >>
>> >> Como puedo mostrarle al usuario la clave primaria correspondiente
>> >> donde
>> >> ya existe la clave candidata que se esta digitando?
>> >>
>> >> SS2000
>> >>
>> >> Jose Luis
>> >>
>> >
>> >
>>
>>
>>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida