Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вопрос про for no key update / 2 сообщений из 2, страница 1 из 1
01.02.2017, 08:21
    #39395984
AlexBabakaev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про for no key update
Здравствуйте.

Есть 2 таблицы:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create table account
(
	id integer,
	balance numeric,
	constraint pk_account primary key (id)
);

create table transaction
(
	id serial, 
	idaccount int, 
	amount numeric, 
	constraint pk_transaction primary key (id),
	constraint fk_transaction_idaccount foreign key (idaccount) references account (id)
);

insert into account( id, balance)
select 1, 10;



Запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
begin transaction;
do
$$
declare 
	l_Balance int;
	l_IDAccount int;
	l_Amount int;
begin

l_IDAccount := 1;
l_Amount := 5;

insert into transaction( idaccount, amount)
select l_IDAccount, l_Amount;

select balance
into l_Balance
from account
where id = l_IDAccount
for no key update;

raise notice '%', l_Balance;

update account
set Balance = Balance + l_Amount
where ID = l_IDAccount;

end
$$

commit;



Запускаю запрос в двух окнах pgAdmin, коммит не делаю. В первом окне получаю "ЗАМЕЧАНИЕ: 10". Второй запрос висит и ждет. В первом окне выполняю коммит. Второй запрос возвращает "ЗАМЕЧАНИЕ: <NULL>", хотя я ожидаю получить "ЗАМЕЧАНИЕ: 15".

Проблема исчезает, если заменить for no key update на for update, либо если удалить внешний ключ fk_transaction_idaccount. Хотелось бы понять, что не так с for no key update?
...
Рейтинг: 0 / 0
01.02.2017, 08:33
    #39395993
AlexBabakaev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про for no key update
Пробовал на двух версиях - 9.4.10 и 9.5.5
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вопрос про for no key update / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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