Как убедиться, что значение, вводимое в поле базы данных SQL, уникально? - PullRequest
0 голосов
/ 20 мая 2019

Я получаю vlue от пользователя и ввожу его в свою таблицу в базе данных. Но я должен выдать пользователю ошибку, если он введет значение в поле данных, которое уже занято.

UPDATE Class_records SET The_number= '456' where class='mech-4B'

Итак, я обновляю свою таблицу, устанавливая для The_number значение «456» для каждой записи в mech-4B.

Какой тип запроса я могу сделать, чтобы, когда другой пользователь вводил то же число 456, говоря "cse-4B", условие запроса не выполнялось?

Ответы [ 3 ]

0 голосов
/ 20 мая 2019

Итак, вы должны написать для него хранимую процедуру:

CREATE PROCEDURE UpdateXYZTableWithUniqueness
    (@The_number AS INT,
     @class AS NVARCHAR)
AS 
BEGIN 
     SET NOCOUNT ON 

     IF ((SELECT COUNT(*)  
          FROM Class_records 
          WHERE The_number = @The_number) == 0)
     BEGIN
         UPDATE Class_records 
         SET The_number = @The_number 
         WHERE class = @class 
     END
     ELSE
     BEGIN
         PRINT 'Already Exits'
     END
END
GO
0 голосов
/ 20 мая 2019

Если вы работаете с mysql, вы можете попытаться добавить «игнорировать» после обновления: «Обновление игнорировать набор Class_records ...».

Вы можете посмотреть эту статью: https://chartio.com/resources/tutorials/how-to-insert-if-row-does-not-exist-upsert-in-mysql/

Если вы работаете с T-SQL, вы можете попробовать использовать «Если не существует ...»: «Если не существует» (выберите * из Class_Records, где The_number = '456' и class = 'mech-4B'). НачалоОБНОВЛЕНИЕ Class_records SET The_number = '456', где class = 'mech-4B' end "

Вы можете посмотреть эту статью: SQL Server 2008 - ЕСЛИ НЕ СУЩЕСТВУЕТ, ВСТАВЬТЕ ЕЩЕ ОБНОВЛЕНИЕ

прощай

0 голосов
/ 20 мая 2019

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

if (rowCount() > 0){
    //value is new 
}
else {
    //value is duplicated and throw error.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...