powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Аналог IF @@ROWCOUNT > 0 из T-SQL'a
4 сообщений из 4, страница 1 из 1
Аналог IF @@ROWCOUNT > 0 из T-SQL'a
    #37802667
n3wb13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется т-скл запрос к таблице [foo] (bar_id int primary key autoincrement, bar_name varchar)

Код: sql
1.
2.
3.
4.
insert into foo(bar_name)
 values(@bar_name_new);
if @@rowcount > 0 then
 select bar_id, bar_name from foo where bar_id = scope_identity();



После вставки поле bar_name может модифицироваться триггером, поэтому я обновляю вставленную запись.
Нужно реализовать подобный функционал в sqlite. Т.е. если изменений не произошло - не выполнять селект вообще.
Сейчас запрос в таком виде:

Код: sql
1.
2.
3.
insert into foo(bar_name)
 values(@bar_name_new);
 select bar_id, bar_name from foo where bar_id = (SELECT last_insert_rowid());



Про функции changes() и case when в курсе, но как это все сплести в запросе? Т.е. если changes() вернуло 0 - не выполнять селект вообще.
...
Рейтинг: 0 / 0
Аналог IF @@ROWCOUNT > 0 из T-SQL'a
    #37802678
n3wb13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немного некорректно получилось с инсертом, так как опустил много логики.
В таком случае запросы в 1м посте читать как апдейты:

Код: sql
1.
2.
3.
4.
5.
update foo
  set bar_name = @bar_name_new
  where bar_id = @bar_id_old and bar_name = @bar_name_old;
if @@rowcount > 0 then
 select bar_id, bar_name from foo where bar_id = @bar_id_old;



обновление может завершиться неуспешно по некоторым причинам, в таком случае селект делать не надо.
Как такое реализовать в sqlite?
...
Рейтинг: 0 / 0
Аналог IF @@ROWCOUNT > 0 из T-SQL'a
    #37802688
n3wb13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал вот таким вот извращенным способом
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select
 case when changes() > 0 then id end,
 case when changes() > 0 then date end, 
 case when changes() > 0 then flattype end, 
 case when changes() > 0 then dealtype end, 
 case when changes() > 0 then address end, 
 case when changes() > 0 then square end, 
 case when changes() > 0 then floors end, 
 case when changes() > 0 then floor end, 
 case when changes() > 0 then balcony end,  
 case when changes() > 0 then price end, 
 case when changes() > 0 then contact end, 
 case when changes() > 0 then additional end
from flats where id=@idOld
...
Рейтинг: 0 / 0
Аналог IF @@ROWCOUNT > 0 из T-SQL'a
    #37804908
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> n3wb13,
> Сделал вот таким вот извращенным способом

А так не подойдёт ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select
 id,
 date, 
 flattype, 
 dealtype, 
 address, 
 square, 
 floors, 
 floor, 
 balcony,  
 price, 
 contact, 
 additional
from flats 
where changes() > 0 and id=@idOld
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Аналог IF @@ROWCOUNT > 0 из T-SQL'a
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]