Я не думаю, что @varCheckUser когда-либо будет иметь значение NULL, если нет строки, это будет 0
set @varCheckUser = (select COUNT(usu.usu_Ds)
from Usuarios usu where usu.usu_ds = @usu_ds);
, это сделает его 0
, и вы проверите вот такдля NULL
if (@varCheckUser IS NOT null)
почему бы вам не сделать что-то подобное
IF EXISTS (select 1
from Usuarios usu
where usu.usu_ds = @usu_ds)
SET @varCheckUser =1
, а затем проверить, что это не 1
зачем вам тран?Просто сделайте что-то вроде этого
IF EXISTS (select 1
from Usuarios usu
where usu.usu_ds = @usu_ds)
BEGIN
RAISERROR('User already exists',16,1)
RETURN
END
ELSE
BEGIN
insert into Usuarios(usu_ds,usu_dt_create,usu_dt_lst_log,usu_ds_senha,usu_ds_email)
values(@usu_ds,@usu_dt_create,@usu_dt_lst_log,@usu_ds_senha,@usu_ds_email)
END
Вероятно, хорошая идея сделать usu_ds primary key
или добавить unique constrain
t, чтобы никто не мог обновить свое имя пользователя до чего-то существующего, и никто не может по ошибкеиспользовать SSMS и изменить имя пользователя на то, что уже есть в таблице