Вверх ↑
Ответов: 655
Рейтинг: 18
#1: 2015-05-30 01:32:40 ЛС | профиль | цитата
Объясните пожалуйста логику where exists.
Есть таблица data в нее должен записываться лог, лог должен записываться только если есть определенная запись в таблице data2.

таблица data2
id -integer

имеющиеся записи:
1
2
3

insert into data(column) select 'test' from data2 where exists(select 1 from data2 where id=1);

в результате такого запроса в таблице data создается 3 записи 'test'. Почему так?
Ведь в условии сказано where exists(select 1 from data2 where id=1)

Запрос вида:
insert into data(column) select 'test' from data2 where id=1 and exists(select 1 from data2 where id=1);
работает правильно и в таблице data создается одна запись 'test'.

(триггеры не предлагать потому что данные после формируются по маске)

------------ Дoбавленo в 01.32:
Простите за тупой вопрос разобрался)))
карма: 0

0