2015-12-14 2 views
1

Я хочу, чтобы вставить записи в table1 путем сопоставления одного значения столбца table2 для каждого ID из table1. Если он не существует, вставьте это значение столбца для этого ID. Как я могу это достичь?ВСТАВИТЬ table2.column INTO Table1 только если не существует в Table1 для Table1.ID

table1 содержит roleID и ScreenCode с типом доступа для этого roleID:

enter image description here

table2 содержит ScreenCodes:

enter image description here

Проблема возникает, когда новый экран добавляется его тип доступа N РЕКОМЕНДУЕМЫМ быть добавлен для каждой роли в таблице UserLoginRoleAccess.

+1

Вы можете добавить данные образцы таблиц и ожидаемое поведение ВСТАВИТЬ? – jarlh

+0

Я обновил его ... – Ziddu

+0

@Ziddu. , , Ответ - «триггер использования». Но зачем беспокоиться? Вы можете просто добавить роли по мере необходимости. –

ответ

0
IF EXISTS (SELECT * FROM Table1 WHERE Table1.Id in(select top 1 Table2.column from Table2) THEN 
    --Do what you want 
ELSE 
    --Insert 
    INSERT INTO TABLE1(Values) VALUES('') 
    SELECT TableID FROM Table WHERE TableID=SCOPE_IDENTITY() 
END 

попробовать это, надеюсь, это поможет

+0

Как подобрать «ScreenCode» из «Таблицы2» для вставки, которого нет в «Таблице1»? @Sudhir – Ziddu

+0

ok использовать cte, чтобы получить всю RoleId таблицы1, затем передать его, чтобы выбрать данные Table1, а затем проверить .. В принципе, вам нужно поставить все RoleId, чтобы проверить ScreenCode Exist или нет –

Смежные вопросы