У меня есть оператор вставки, который я не могу получить так, как я хочу. Это на странице vb.net. Это на странице VB.net, и я использую SQL Server 2005 для своей базы данных.
Dim strSQL As String = "IF NOT EXISTS
(SELECT Title From Picklist)
BEGIN INSERT INTO Picklist (Title, Data)
VALUES (@Title, @Data);
INSERT INTO Marketing
(ProductID, MarketingTypeID, MarketingTitle, MarketingData)
VALUES (@ProductID, 9, 'Video', scope_identity()) END"
Я не получаю сообщение об ошибке, и в базу данных ничего не вставляется. Если я попытаюсь поставить END в конце первого оператора INSERT, то получаю сообщение об ошибке, говорящее, что MarketingData имеет значение NULL и не может быть вставлен.
Но если я вычеркну, ЕСЛИ НЕ СУЩЕСТВУЕТ из утверждения, все вставляется отлично. Что я тут не так делаю?
ОБНОВЛЕНИЕ: Правильно ли писать подобное утверждение?
INSERT INTO Marketing
SELECT (@ProductID, @MarketingTypeID, @MarketingTitle, @MarketingData)
WHERE NOT EXISTS
(SELECT * FROM Marketing)