SQL. Сделать проверку с EXISTS

128
09 января 2021, 19:10

мне нужно регистрировать пользователь в БД и для этого я должен проверить не существует ли такого логина (номера телефона) уже в базе и если да то зарегистрировать.

Пример:

INSERT INTO Client (Name, Last_Name, Address, City, Phone, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '123456789', 'Norway'); 

Все мои логины (номера телефонов) и пароли находяться в представлении Users Как именно мне сделать проверку с Exists.

Проблему решил таким условием

if exists(select log from login_phone where log = phone)
then raise exception 'Уже существует такой телефон. В регистрации отказано';
Answer 1

По-хорошему, проверки такого рода возможны только для получения человеческих сообщений об ошибке на клиенте. В реальности же полагаться на exists нельзя, потому как нет никаких гарантий, что все записи будут вставляться через метод API, который вы описываете. Специально для таких ситуаций SQL предлагает вам создавать ограничения уникальности (unique constraints), описав которые, вы можете быть уверены в том, что в таблице точно всё будет хорошо:

-- на этапе создания таблицы
CREATE TABLE Client (
    Phone bigint UNIQUE,
);
-- для уже созданной таблицы
ALTER TABLE Client ADD CONSTRAINT UNIQUE (Phone);

В случае с номером телефона вам можно так же задуматься о создании уникального индекса, это, кроме вышеописанного, позволит БД быстрее выполнять запросы, если выборка будет вестись по этому полю.

CREATE UNIQUE INDEX Phone_idx ON Client(Phone);
READ ALSO
неправильная кодировка в ssis

неправильная кодировка в ssis

Доброго времени суток !

91
Как вычислить цену без скидки и округлить?

Как вычислить цену без скидки и округлить?

Есть 2 переменные: цена со скидкой и размер скидкиНужно вывести изначальную цену без скидки

121
Вывод значения количества из бд

Вывод значения количества из бд

Есть таблица shop_order, в этой таблице данные о заказах за исключением количества (поле quantity), количество находится в другой таблице - shop_order_itemsНужно...

86
Как подключить API на локальном сервере?

Как подключить API на локальном сервере?

У меня есть форма регистрации, получается клиент наполняет эту форму, и в конце калькулятор вычитывает сумму которую клиент должен оплатить,...

98