powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Не редактируются записи
17 сообщений из 17, страница 1 из 1
Не редактируются записи
    #38811576
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE TABLE TEST15 (
    ID        INTEGER NOT NULL,
    NextCheck TIMESTAMP NOT NULL,
    Minutes   INTEGER NOT NULL
);

SET TERM ^ ;

create or alter procedure TEST15_PROC
as
declare variable ID integer;
declare variable NOW timestamp;
begin
  Now = CURRENT_TIMESTAMP;
  for select ID from TEST15 into :ID do begin
    update TEST15 set NextCheck=:Now+Minutes/1440.000000
    where ID=:ID;
  end
end^

SET TERM ; ^

GRANT SELECT,UPDATE ON TEST15 TO PROCEDURE TEST15_PROC;



Вношу какие-нибудь записи в таблицу, коммит, выполняю запрос execute procedure Test15_Proc, коммит, после этого записи в таблице TEST15 перестают редактироваться в UI IBExpert'а (после коммита возвращаются старые значения полей). Update-запросом данные изменить по-прежнему можно. Это баг IBE, или я что-то делаю не так?
...
Рейтинг: 0 / 0
Не редактируются записи
    #38811793
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolf 1. Вношу какие-нибудь записи в таблицу,
2. коммит,
3. выполняю запрос execute procedure Test15_Proc,
4. коммит,
5.после этого записи в таблице TEST15 перестают редактироваться в UI IBExpert'а (после коммита возвращаются старые значения полей).

А попробуй после шага 2 закрыть окно с табличкой
...
Рейтинг: 0 / 0
Не редактируются записи
    #38811800
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolfили я что-то делаю не так?
Перед пунктом 5 не достаёшь новые данные в гридку
(ну я так думаю)
...
Рейтинг: 0 / 0
Не редактируются записи
    #38811826
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

IBE при коммите из грида начинает новую транзакцию и вытаскивает данные в грид заново. Но это не суть, можно просто переоткрыть грид, ничего не меняется.
...
Рейтинг: 0 / 0
Не редактируются записи
    #38811834
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

даже реконнект к БД не помогает.
...
Рейтинг: 0 / 0
Не редактируются записи
    #38811902
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подключил в приложении грид к датасету FIBPlus — записи редактируются, как положено; более того, после коммита из приложения редактирование включается и в гриде IBE.
...
Рейтинг: 0 / 0
Не редактируются записи
    #38811932
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolfm7m,

даже реконнект к БД не помогает.
В смысле в гридке не видны новые данные????
...
Рейтинг: 0 / 0
Не редактируются записи
    #38811974
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

результаты редактирования не сохраняются, т.е. после коммита в грид возвращаются предыдущие данные.
...
Рейтинг: 0 / 0
Не редактируются записи
    #38812091
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolfрезультаты редактирования не сохраняются, т.е. после коммита в грид возвращаются предыдущие данные.
Ну в общем-то подтверждаю, у меня воспроизводится

Кто виноват что без ПК такое поведение, не знаю
...
Рейтинг: 0 / 0
Не редактируются записи
    #38812217
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

Чтобы удалять/апдейтить в сетке нужен update/delete скрипт с WHERE ID=:OLD_ID. ID берут из PK. Тут PK нет, поэтому в сетке можно безопасно редактировать только через RDB$DB_KEY (что уже хак). Иначе любой неосторожный DELETE/UPDATE затрагивает не только выделенную запись, но и еще кучку, которым вдруг посчастливилось попасть в WHERE. Вставьте в таблицу пяток записей с одинаковым ID...

Так что это скорее не бага, а попытка защитить разраба от его же шаловливых ручек.
...
Рейтинг: 0 / 0
Не редактируются записи
    #38812261
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster...
Насколько помню копания в IBX (другого не знаю)
1 если есть ПК то строится update/delete с
WHERE fld_PK=:OLD_fld_PK

2 если есть уникальный индекс то строится update/delete с
WHERE fld_UN_1=:OLD_fld__UN_1 and ... and fld_UN_k=:OLD_fld__UN_k (все поля этого индекса)

3 иначе строится update/delete с
WHERE fld_1=:OLD_fld_1 and ... and fld_n=:OLD_fld_n (все поля таблицы)

насчет 2-го не уверен (возможно выдаю желаемое за действительное)
по поводу 3-го не помню насколько там обрабатываются NULL

и таки да в 3-м случае
DarkMasterИначе любой неосторожный DELETE/UPDATE затрагивает не только выделенную запись, но и еще кучку, которым вдруг посчастливилось попасть в WHERE

и это нормальное поведение
и совершенно излишне "защищать разраба от его же шаловливых ручек"
...
Рейтинг: 0 / 0
Не редактируются записи
    #38812349
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

А вот фиг его знает, что там генерится.Да и компонент вагон и маленькая тележка (насколько я знаю/догадываюсь - внутри ИБЭ сидит модифицированный FIB+)... Как по мне - так лучше "не пущать", чем надеятся на ИИ. К тому же в примере мы видим отсутствие PK/UNIQUE. Т.е. возможно наличие n-го количества одинаковых записей и следовательно массовых айдейтов/делитов.
В этом случае единственным решением (без усложнения логики) считаю использование RDB$DB_KEY, в противном случае будет неадекватная реакция - "оно у меня удалило 100500 записей, а я хотел одну".
...
Рейтинг: 0 / 0
Не редактируются записи
    #38812362
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

Если это нормальное поведение - редактируйте через sql запросы в редакторе. Я же ожидаю, что изменения применятся только для текущей записи в сетке, а не к еще каким-то (вдруг они мне нужны?).
Т.е. я в таблицу заношу:
1 2
2 3
2 3
2 4
А теперь попробуй в сетке заменить одну из 2-3 на 2-5. Чтобы в таблице было 1-2,2-3,2-4,2-5. Будут лишние телодвижения.
...
Рейтинг: 0 / 0
Не редактируются записи
    #38812405
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterm7m,

Если это нормальное поведение - редактируйте через sql запросы в редакторе. Я же ожидаю, что изменения применятся только для текущей записи в сетке, а не к еще каким-то (вдруг они мне нужны?).
Т.е. я в таблицу заношу:
1 2
2 3
2 3
2 4
А теперь попробуй в сетке заменить одну из 2-3 на 2-5. Чтобы в таблице было 1-2,2-3,2-4,2-5. Будут лишние телодвижения.
пофиг, откуда и через что редактируется, если запись нельзя однозначно идентифицировать
А её нельзя однозначно идентифицировать не привлекая особенности реализации движка БД
...
Рейтинг: 0 / 0
Не редактируются записи
    #38814963
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, дело в миллисекундах, которые не попадают в апдейт. Лень проверять...
...
Рейтинг: 0 / 0
Не редактируются записи
    #38820527
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

верно.
редактирование таблицы без ПК (или хотя бы UNIQUE) в гриде - ересь. Попытка тут использовать rdb$db_key - притягивание за уши специфики сервера (т.е. физической адресации записей, что противоречит правилам РСУБД).

Допустим, rdb$db_key вообще нет. Поэтому редактируя "текущую запись в гриде" отредактируется от 1 до N таких же записей.
...
Рейтинг: 0 / 0
Не редактируются записи
    #38820531
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvDarkMaster,

верно.
редактирование таблицы без ПК (или хотя бы UNIQUE) в гриде - ересь. Попытка тут использовать rdb$db_key - притягивание за уши специфики сервера (т.е. физической адресации записей, что противоречит правилам РСУБД).

Допустим, rdb$db_key вообще нет. Поэтому редактируя "текущую запись в гриде" отредактируется от 1 до N таких же записей.
Дополню,
Это относится вообще к редактированию (удалению) , а не только к редактированию (удалению) в гридке,
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Не редактируются записи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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