powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Двойной update, bug?
61 сообщений из 61, показаны все 3 страниц
Двойной update, bug?
    #38575453
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DDL:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table t(
  id bigint primary key, 
  f1 varchar(100), 
  f2 varchar(100)
);

create procedure p (
  id bigint) 
returns (
  Result varchar(100)
)
as
begin
  update t 
     set f2 = 'value updated by function' 
   where id = :id;
  Result = 'value from function';
  suspend;
end;

insert into t(id, f1, f2) values (1, 'old f1', 'old f2');


Двойной update:
Код: sql
1.
2.
3.
update t 
   set f1 = (select Result from p(1)) 
 where id = 1;


Запрос:
Код: sql
1.
select f1, f2 from t;


Результат:
idf1f21value from functionold f2

Как же так?
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575456
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл указать: Server Version: WI-V2.5.2.26540 Firebird 2.5
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575460
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovКак же так?А как ты хотел ?
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575465
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

а вот нефиг в селективных процедурах update делать, если это конечно не GTT
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575469
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad,

idf1f21value from function value updated by function

Чтобы сохранились результаты 2-х последовательных update независимых полей.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575483
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovЧтобы сохранились результаты 2-х последовательных updateА где тут два последовательных update ?

Далее - запись или обновляется вся, или не обновляется (тоже вся). Нет никаких "update независимых полей".

PS Последовательные операции - это такие операции, у которых не пересекаются моменты начала и окончания.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575485
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,
автора вот нефиг в селективных процедурах update делать, если это конечно не GTT
Нет, не GTT и транзакция пишущая.

А почему нельзя? Например процедура, что-то изменила и сообщила об этом.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575494
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovНапример процедура, что-то изменила и сообщила об этом.

Для этого процедуру не обязательно делать селективной. Ты ещё не на такие баги напорешься если будешь так делать. В курсе про не стабильность курсора?

Если хочешь в каком-то поле зафиксировать тот факт что таблица была изменена это можно сделать с помощью триггеров.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575496
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot hvlad]rashid.abzalovА где тут два последовательных update ?

да хоть бы и непоследовательных. типа update (в процедуре) прошел, ошибок никто не получил, а результата-то его -ап!, и нету.

"Нехорошо, Шурик" (с).
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575499
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad,
авторА где тут два последовательных update ?
Ну, хорошо, не последовательных, а вложенных.

авторДалее - запись или обновляется вся, или не обновляется (тоже вся). Нет никаких "update независимых полей".
То, что сейчас это работает так, это понятно? Но правильно ли это?
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575577
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovТо, что сейчас это работает так, это понятно? Но правильно ли это?Я с радостью приму ссылку на стандарт, где описано это поведение.
Сам искать не буду - нет ни времени, ни желания.

Функции с побочными эффектами - это бардак. В любом ЯП.
Обычно в первый год обучения (практического, а не теоритического) это проходит :)
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575579
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmon,

не надо меня провоцировать
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575582
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladpizmon,

не надо меня провоцировать

Я пошутил, не обижайся.

по сути - все понятно, спасибо.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575627
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmon,

для закрепления материала советую подумать над результатом немного модифицированной процедуры

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create procedure p (
  id bigint) 
returns (
  Result varchar(100)
)
as
begin
  delete from t  
  where id = :id;
  Result = 'value from function';
  suspend;
end;



Код: sql
1.
2.
3.
update t 
   set f1 = (select Result from p(1)) 
 where id = 1;
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575641
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисpizmon,

для закрепления материала советую подумать над результатом немного модифицированной процедуры

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create procedure p (
  id bigint) 
returns (
  Result varchar(100)
)
as
begin
  delete from t  
  where id = :id;
  Result = 'value from function';
  suspend;
end;



Код: sql
1.
2.
3.
update t 
   set f1 = (select Result from p(1)) 
 where id = 1;



Тебя-то можно провоцировать? Не сбежишь?

Тогда есть три варианта - delete в процедуре удаляет одну запись, update - no rows affected.
Второй вариант - exception при update (во внешнем контуре).
Третий вариант - exception в процедуре, типа попытки удалить залоченную запись.

Теперь ты о чем-нибудь подумай.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575766
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmon,

даже думать не собираюсь. Просто привёл абсурдность таких действий
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575770
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmon,

не угадал результьтат
null null null
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575773
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

это для Fb3

для Fb2.5

The cursor identified in the UPDATE or DELETE statement is not positioned on a row.
no current record for fetch operation.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575855
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисСимонов Денис,

для Fb2.5

The cursor identified in the UPDATE or DELETE statement is not positioned on a row.
no current record for fetch operation.

Таки шо мэшаеть сделать то же самое для конфликта update-update? Или хотя бы признать проблему?
Модератор: Давайте не будем заниматься наездами?
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575886
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: удалено
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575913
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovА почему нельзя?Если не сделать fetch all резалтсета, то результаты могут быть самыми неожиданными.
Изменения в таблице лучше фиксировать триггерами.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575932
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чорт, всё проспал! Надеюсь, под модераториалом скрывается та самая ссылка на стандарт, а не выступление по национальному вопросу.

Давайте, шановни друзи, вернемся к исходному вопросу.
Про триггера я действительно чуть было не забыл. А они говорят, что updatы таки действительно последовательные, зря мы эту позицию так легко сдали.

Можно слегонца модифицировать исходный DML:

Код: sql
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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
create generator newid;

create table t(
  id bigint primary key, 
  f1 varchar(100), 
  f2 varchar(100) 
);

create table tr(
  id bigint,
  log varchar(100)
);

SET TERM ^ ;

CREATE TRIGGER tbu FOR T
ACTIVE BEFORE UPDATE POSITION 0
AS 
BEGIN 
  insert into tr(id, log) values (gen_id(newid, 1), 'before update: ' || new.f2 );  
END^

CREATE TRIGGER tau FOR T
ACTIVE after UPDATE POSITION 0
AS 
BEGIN 
  insert into tr(id, log) values (gen_id(newid, 1), 'after update: ' || new.f2 );  
END^


create procedure p (
  id bigint) 
returns (
  Result varchar(100)
)
as
begin
  update t 
     set f2 = 'value updated by function' 
   where id = :id;
   
 insert into tr(id, log) 
  select gen_id(newid, 1), 'after statement: ' || f2
   from t where id = :id; 

  Result = 'value from function';
  suspend;
end^


SET TERM ;^ 
commit;
insert into t(id, f1, f2) values (1, 'old f1', 'old f2');
update t 
   set f1 = (select Result from p(1)) 
 where id = 1;
select * from tr order by id;



И получить
Код: sql
1.
2.
3.
4.
5.
 1 before update: value updated by function
 2 after update: value updated by function
 3 after statement: value updated by function
 4 before update: old f2
 5 after update: old f2



Намек на то, что пока первый апдейт не закончился, второй - не начинается.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575938
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladФункции с побочными эффектами - это бардак. В любом ЯП.

Всё есть яд, дружище, и всё есть лекарство - однако же в зависимости от дозы.
Мне вот кажется, что "прогоченный" оператор - это больший бардак, чем весь side-effect в мире, вместе взятый. Так что провоцировать надо, иначе не достучаться.

Мир?
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575974
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmon,

если тебе что-то кажется, а тебе говорят, что это не так, то это есть повод или самому разобраться - почему тебе так говорят, или спросить - а как же там оно на самом деле, или тупо троллить оппонента.
Ты пошёл последним путём - твой выбор.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575975
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2модератор - не перегибай с удалениями, ибо будет нечего удалять вскоре.

2all - я всего лишь спросил, не пошутил ли pizmon опять...
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38575976
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmonНамек на то, что пока первый апдейт не закончился, второй - не начинается.Ты приравнял момент выполнения триггера before update с началом собственно update.
А это далеко не так.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576047
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmonТаки шо мэшаеть сделать то же самое для конфликта update-update? Или хотя бы признать проблему?


проблема только в консерватории проектировщика который до этого додумался.
По идее для update-update тоже надо выдавать ошибку, но не такую. Это примерно также как по стандарту merge при попадании под условие соединения более одной строки должен давать ошибку, но не даёт её сейчас. А вообще это почти никого не беспокоит, потому что так никто не делает.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576053
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о... это вон оказывается специально сделано судя по топику где автор хочет сайд эффекта
http://www.sql.ru/forum/737146/emuliciya-funkcii-s-side-effect?hl=
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576065
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисо... это вон оказывается специально сделано судя по топику где автор хочет сайд эффекта
http://www.sql.ru/forum/737146/emuliciya-funkcii-s-side-effect?hl= Там несколько другое, ибо ф-цию с сайд-эффектом он вызывает из select, а не из update
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576472
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmonшановни друзи
Твою мову не розумію. На форуме пишем по-русски, кроме случаев, когда это действительно нужно. Прошу не злоупотреблять.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576732
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSerypizmonшановни друзи
Твою мову не розумію. На форуме пишем по-русски, кроме случаев, когда это действительно нужно. Прошу не злоупотреблять.

Просто люблю ее. Извините.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576760
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad,

Я думаю, что смогу выбить финансирование под решение этой проблемы.
Если интересно, пиши на почту.
И сообщи примерную сумму, сроки, войдет ли в ветку 2.5 и что это будет - exception или "нормальная" отработка update-ов.
Заранее - спасибо.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576824
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovчто это будет - exception или "нормальная" отработка update-ов.
"Нормальной" отработки тут быть не может. Представь update field=field+func(), где func()
что-то делает. Проверка и перечитывание записи зациклятся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576864
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

автор"Нормальной" отработки тут быть не может. Представь update field=field+func(), где func()
что-то делает. Проверка и перечитывание записи зациклятся.
Если учитывать новый параметр конфига "OldSetClauseSemantics", то ничего не зациклится: инкрементируемое поле должно иметь old значение на момент первого update-а.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576869
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

в fb3 занимались проблемой стабильного курсора. И исправили его для наиболее встречающихся случаев. Но!!! Всё это работает до того момента пока нет оператора suspend в ХП. Поэтому лучше не ждать исправления, а просто начать нормально писать свой код.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576871
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovчто это будет - exception или "нормальная" отработка update-ов.


ИХМО. Правильно кидать exception в таких случаях, т.к. результат работы не одназначен
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576899
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovинкрементируемое поле должно иметь old значение на момент первого
update-а.
Сейчас оно так и есть. Просто до кое-кого не доходят две вещи:
1) update обновляет все поля, а не только явно перечисленные.
2) Первый update как раз - внешний.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576918
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad,
Dimitry Sibiryakov,

Тогда остается поднятие exception-а. Это лучше чем ничего.
Предложение в силе.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576919
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov1) update обновляет все поля, а не только явно перечисленные.

Это "by design", этого же явно нигде не написано? Или я плохо искал?
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576946
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmonЭто "by design", этого же явно нигде не написано?
Это самоочевидность: нельзя записать на диск половину записи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576954
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЭто самоочевидность


Убедил :)
Тогда exception - действительно лучший выход.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576969
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exception это более правильно. В общем случае подзапросы в которых есть ХП c DML могут выполняться в любом порядке, как того захочется оптимизатору. А потому результат может быть различным в разных ситуациях. Но! Будет много недовольных, т.к. некоторые могли заложиться на эту фичу. Лично автору это зачем? Что нельзя сразу разделить селективные ХП и ХП модифицирующие данные. И принять за правило что смешивать модификацию данных и извлечение нельзя.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38576985
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть мы все прогосовали по поводу работы, которая не нами будет делаться и не нами будет оплачиваться?
Мы молодцы.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577091
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Я как пользователь СУБД рассчитываю на однозначное поведение сервера, либо он скушал запрос и сделал что ему сказали, либо обругался, что так делать нельзя.
В моем случае, что так делать нельзя, я знал не от сервера, а пришел сюда и узнал его от разработчиков СУБД.

Теперь представим ситуацию, что есть пользователи нашего продукта, которые тоже пишут код, но уже не подконтрольный нам.
Как это ни странно, они тоже рассчитывают на однозначное поведение нашего продукта.

Но куда им идти в противном случае? Тоже на форум, чтобы узнать тайные правила?
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577098
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

в MSSQL запрещены функции с побочными эффектами. Этого хочешь?
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577103
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

В Oracle, кстати тоже. Но это не принято кем-то за правило - тайно.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577109
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

да я в целом поддерживаю. Но это приведёт к потере совместимости для приложений которые заложились на эту фичу
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577174
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalovНо это не принято кем-то за правило - тайно.
Какое правило? В чём тайна? Последовательность действий при update никто ни от кого не
скрывает:
1) Получение старых значений
2) Вычисление новых значений (включая те, что на основе старых и равны им)
3) Запуск before-триггеров
4) Сохранение новых значений
5) Запуск after-триггеров

Какой из пунктов последовательности для тебя сюрприз?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577182
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Ну чего дерьмо в ступе толочь? Вот сюрпиз: (включая те, что на основе старых и равны им)
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577190
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmonВот сюрпиз: (включая те, что на основе старых и равны им)
Да? Человек никогда не пользовался старыми значениями в выражениях после set и не обращал
внимание, что в триггерах доступны все поля в контексте old?.. Ню-ню...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577193
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Все сообщения про тайные правила направлены Симонову Денису в ответ на его предложение: Симонов ДенисИ принять за правило что смешивать модификацию данных и извлечение нельзя
Зачем вводить собственные правила, когда сервер сам бы мог пресечь неверное, на его взгляд, поведение.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577199
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНю-ню...


А какая связь? И проблема-то не в части "читать", а в части "вычислять новые значения на основе старых, ... которые ... равны им". Нарена их вычислять, казалось бы? "Вычисление новых значений" и контекст "old" - вообще мало связанные вещи, да и хрен пока со всеми триггерами - речь идет об эквивалентности update t set f1 = ... и update t set f1=..., f2=f2, f3=f3....

Эта эквивалентность во-первых, ниоткуда не следует, во-вторых, не неизбежна.

То, что FB работает в данный момент именно так - мы поняли с помощью топикстартера, твоей и всех участников. Спасибо. Что же дальше?
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577217
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmonНарена их вычислять, казалось бы?
А откуда ещё новым значениям полей браться-то?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577444
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

сколько сервер не учи все виды гавнокода он пресечь не сможет
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577448
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov1) Получение старых значений
2) Вычисление новых значений (включая те, что на основе старых и равны им)
А ты точно не усложняешь?
Мне кажется, никакого "включая те..." не происходит.
У нас есть считанная старая запись, мы меняем в ней что меняется, и при этом никуда старые значения других полей не деваются.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577487
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисrashid.abzalov,

сколько сервер не учи все виды гавнокода он пресечь не сможет

Не хотелось бы тебя расстраивать, но это как раз одна из главных причин разаработки стандарта SQL - дать однозначное поведение в тех случаях, когда оно имеет смысл, и детектировать ошибку во всех остальных случаях.

Ты подходишь к СУБД как к библиотеке - "так, быстрая сортировка уже есть, можно самомму не программировать - а правильно переложить это на сервер. Надежное транзакционно-устойчивое хранение уже есть - можно самому не писать, главное - правильно использовать "библиотеку", то бишь СУБД", и так далее. Но такой подход к делу - не единственно возможный.

И, да, задача сервера - детектировать неоднозначные запросы и ругаться на них.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577494
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmon,

это всё пустые рассуждения. По существу согласен, но есть вопрос совместимости. Да и задача не столь важная. Куда важнее улучшать оптимизатор, производительность IO, безопасность. А детектирование гавнокода можно оставить на потом.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577503
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Это не пустые рассуждения. Это мои рассуждения. Не хами дяде.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577509
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmon,

ещё по поводу гавнокода. Вот взять к примеру Оракл. Там всячески пытаются огородить программиста. Мутации ввели. Мне достался проект который я сейчас поддерживаю. Так вот предыдущий программер там такого понаписал, чтобы обойти мутации. Он запихивал в построчном триггере ключ в переменную пакета, а затем в триггере на статмент использовал её для дальнейших манипуляций. И всё бы хорошо пока вставляется/модифицируется одна запись. Но как только их несколько получается полная чушь. И вот тут вопрос каким образом сервер защитил программера от этой ошибки? Помогла ли ему фича с мутацией?
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577521
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmonСимонов Денис,

Это не пустые рассуждения. Это мои рассуждения. Не хами дяде.

не в коем случае не хотел нахамить. Рассуждения пустыми считаю потому, что сильно сомневаюсь что по их результатам разработчики побегут изменять поведения сервера.
...
Рейтинг: 0 / 0
Двойной update, bug?
    #38577654
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryА ты точно не усложняешь?
Мне кажется, никакого "включая те..." не происходит.
У нас есть считанная старая запись, мы меняем в ней что меняется, и при этом никуда старые
значения других полей не деваются.

У нас есть считанная старая запись. Мы копируем её в новую. По-моему, этот процесс
подпадает под "вычисление", пусть даже EVL не вызывается.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Двойной update, bug?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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