Я просто хочу убедиться, что все делаю правильно.
У меня есть две таблицы:
Customer:
ID: GUID
name: varchar
... etc
and Reference
ID: GUID
customerid: GUID ----> FK
Myreference: varchar (max)
timestamp: datetime
У меня есть следующая хранимая процедура, которая проверяет справочную таблицу, если ссылка является уже используется другими клиентами.
@CustomerId [uniqueidentifier],
@Myreference [nvarchar]
AS
BEGIN
SELECT
CAST(CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS BIT) AS IsInUse
FROM Reference
WHERE CustomerId <> @CustomerId AND Myreference= @Myreference
END
GO
Теперь мне нужно изменить хранимую процедуру, чтобы проверить, используется ли ссылка другим клиентом, чтобы проверить, есть ли у другого клиента другая ссылочная запись, затем вернуть 0, в противном случае вернуть 1.
Вот мое изменение, но я уверен, что оно может быть лучше.
IF (SELECT CAST(CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS BIT) AS IsInUse
FROM Reference
WHERE CustomerId <> @CustomerId AND
Myreference = @Myreference ) = 1
BEGIN
SELECT CAST(CASE WHEN COUNT(*) > 1 THEN 0 ELSE 1 END AS BIT) AS IsFine
FROM Reference
WHERE CustomerId = (SELECT CustomerId
FROM Purchase.BureauCreditEnquiry
WHERE CustomerId <> @CustomerId AND
Myreference = @Myreference );
END;
ELSE
BEGIN
SELECT 0;
END;