SQL - оператор SQL был прерван, если одна вставка в строку неверна - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь вставить сотни строк в таблицу, используя такой запрос:

Insert INTO tableX (column1, colum2)
VALUES 
((SELECT sysID FROM tableY where ID = var1), 1)
((SELECT sysID FROM tableY where ID = var2), 1)
et cetera

Теперь предположим, что var88 не существует, он вернет NULL в качестве sysID, однако я не могувставьте NULL в column1, чтобы я получил ошибку, и вся вставка в запрос будет прервана.Есть ли способ отменить все завершение и просто пропустить строки, где sysID = NULL?Я уверен, что смогу сделать это, сначала выполнив правильный выбор, отфильтровав пустые строки, и ТО затем вставив в него, однако мне интересно, есть ли другой способ сделать это.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Где / как вы получаете переменные var1 (и т. Д.) Для ваших значений?

Вы можете преобразовать это в:

Insert INTO tableX (column1, colum2)
VALUES 
Select SELECT sysID, 1
Where ID IN (var1, var2, etc..)
WHERE sysID is not null

Или как-то встроить в цикл (в зависимости ототкуда / как ваши var1 и т. д. приходят

0 голосов
/ 28 февраля 2019

Вместо этого можно использовать следующее, используя INSERT INTO SELECT:

INSERT INTO tableX (column1, colum2) 
    SELECT sysID, 1 
    FROM tableY 
    WHERE ID IN (va1, var2) AND NOT sysID IS NULL
...