INSERT SQL заявление на основе условия из другой таблицы - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь вставить значения в таблицу на основе условий из другой таблицы. В идеале я бы хотел что-то вроде этого:

INSERT INTO table_a SET user_id = 'contactId'
WHERE
    table_b.user_id = 'userA' 
    AND table_b.contact_id = 'contactId' 
    AND user_blocked = false

Итак, перед созданием новой записи в table_a я хочу убедиться, что пользователь не заблокирован проверкой table_b.

Я знаю, что не могу использовать INSERT с WHERE, поэтому не уверен, как мне это сделать.

Ответы [ 3 ]

0 голосов
/ 06 января 2019

Вы можете использовать «Вставить из выбора». Например, эта ссылка поможет вам.

0 голосов
/ 06 января 2019

Вы можете использовать для этого T-SQL или создать хранимую процедуру.

Сначала проверьте, не заблокирован ли user_id в table_b и если ответ ложный, введите значение table_a

Это пример:

DECLARE @user_id INT = 1234

IF ((SELECT user_blocked FROM table_b b WHERE b.USER_id = @user_id) = 'false')
BEGIN
    INSERT INTO table_a 
    VALUES(@user_id,....)
END
0 голосов
/ 06 января 2019

Похоже, что вы ищете INSERT ... SELECT запрос :

INSERT INTO table_a (user_id) 
SELECT 'contactId'
FROM table_b AS tb
WHERE
    tb.user_id = 'userA' 
    AND tb.contact_id = 'contactId' 
    AND tb.user_blocked = false

Если подзапрос ничего не возвращает, внешний INSERT не произойдет.

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