Использование SQl Server CE; Можно вставить, только если не существует, и удалить, если существует? - PullRequest
0 голосов
/ 08 апреля 2009

У меня есть таблица с одним полем в SQL CE, для которой мне нужен оператор SQL. Цель состоит в том, чтобы удалить запись, если она уже существует, и вставить запись, если она не существует. Возможно ли это с помощью SQL CE?

INSERT INTO Source_Table
SELECT     'myvalue' AS Expr1
WHERE     (NOT EXISTS
                 (SELECT     Source_Data
                 FROM        Source_Table AS Source_Table_1
                 WHERE     (Source_Data = 'myvalue')))

Ответы [ 2 ]

1 голос
/ 08 апреля 2009

Почему бы просто ...

DELETE Source_Table WHERE Source_Data = 'myvalue'
GO
INSERT INTO Source_Table (Source_Data) values('myvalue')

Я не уверен, какой смысл будет удалять запись и затем вставлять те же данные, но это должно быть достигнуто.

0 голосов
/ 08 апреля 2009

Если цель состоит в том, чтобы буквально удалить, если она существует, и только вставить ее , если она не существует , тогда вам нужно сделать то, что вы написали.

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

Если бы было более одного поля, конечно, вы бы сделали обновление, а не удаление, а затем вставку. (Но удаление с последующей вставкой - это то, как Sybase внутренне выполняет обновления.)

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