ASP.Net: Как я могу проверить, существует ли уже строка в базе данных? - PullRequest
0 голосов
/ 19 апреля 2011

Я хочу проверить, существует ли уже значение в моей базе данных или нет - если оно существует, я буду использовать запрос на обновление, в противном случае я выполню вставку.

Как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 19 апреля 2011

Вы можете написать хранимую процедуру, которая проверяет, существует ли это уникальное поле или нет. Один из подходов состоит в том, чтобы использовать SP только для вставок и проверить, существует ли это значение. Если он возвращает да, вы можете вызвать Update-StoredProcedure. Этот подход является отказоустойчивым.

Другой подход заключается в обновлении непосредственно в «Вставить» -SP, когда он обнаружит, что значение существует. На мой взгляд это запутанный код.

IF (EXISTS (SELECT *
            FROM  YourTable
            WHERE LoweredUniqueField = LOWER(@Value)))
BEGIN
    -- you could use this output parameter as information
    SET @InfoCode = 1
    GOTO Cleanup
END

-- Else Insert new record:
 INSERT INTO .....

Cleanup:

    RETURN @InfoCode

END
0 голосов
/ 19 апреля 2011

Я думаю, что ваш вопрос не относится к asp, и я предполагаю, что вы подключаетесь к СЕРВЕРУ MS SQL.

Допустим, у вас есть простая таблица, подобная этой:

CREATE TABLE Products_table ( [ProductID] [int] NULL, [Qty] [int] NULL ) ON [PRIMARY]

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

UPDATE Products_table SET Qty = 1000 WHERE ProductID = 10 

INSERT INTO Products_table (ProductID,Qty)<br> SELECT 10 as ProductID, 1000 as ProductQty<br> WHERE NOT EXISTS (SELECT 1 FROM Products_table WHERE ProductID = 10 )

Обновление будет работать только при наличии ProductID = 10, а Insert будет создавать новую строку, только если она еще не существует.Вы должны поместить оба оператора как запрос в одну команду SqlCommand и выполнить ее.

Надеюсь, это поможет.

0 голосов
/ 19 апреля 2011

просто выберите строку, передав значение.Если возвращенный rowcount> o означает, что в таблице есть значение.В этом случае обновите его, иначе вставьте в таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...