SQLServer на существующее обновление - PullRequest
1 голос
/ 04 августа 2011

Мы планируем преобразовать приложение из Sybase SQL Anywhere в SQL Server.

В SA мы используем множество «существующих обновлений», которые проверяют по первичному ключу, существует ли строка.Если true, это обновление (так же, как если бы я выполнял условие обновления).Если нет, он вставляет.

Поддерживает ли SQL Server нечто подобное?

Ответы [ 3 ]

1 голос
/ 04 августа 2011

Если вы будете использовать SQL Server 2008 и более поздние версии, вы можете использовать команду MERGE. Вы можете найти описание здесь:

http://technet.microsoft.com/en-us/library/bb510625(SQL.100).aspx

Если вы используете более старый SQL, решение Джеремии Кларка , предложенное Эриком Сасс , будет в порядке.

1 голос
/ 04 августа 2011

AFAIK нет поддержки в одной команде. И лучший способ, который я нашел, был следовать совету Джеремии Кларка : попробуйте обновить, а затем проверьте количество затронутых записей. Если было ноль, то я вставляю:

UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
    INSERT INTO Table1 VALUES (...)
0 голосов
/ 04 августа 2011

SQL Server обладает всеми функциями высокопроизводительной СУБД, хранимых процедур, триггеров, UDF и т. Д. Как вы, наверное, знаете, MS SQL Server был разветвлен именно от Sybase, поэтому у них есть общие корни.*

Я не уверен, что полностью понял ваш вопрос, конечно, у вас может быть оператор SQL, который содержит некоторую логику и выполняет INSERT или UPDATE в зависимости от некоторых условий или, если запись уже найдена, TSQL является SQL-диалектом SQLСервер и поддерживает это и многое другое.

Если у вас действительно есть конкретный вопрос или сомнение в заявлении, пожалуйста, покажите нам свое заявление, как оно есть у вас сейчас в SA.

...