Как изменить функцию сохранения группы полей? - PullRequest
0 голосов
/ 26 апреля 2019

Я создал страницу для вставки и изменения данных существующей таблицы MySQL.Но исходя из моих требований и структуры таблицы, я должен изменить sql для вставки данных.

Поскольку я полностью новичок в quickclipse и java, мне нужны некоторые советы / примеры, как и где это изменить.Просмотр всех видеороликов по быстрым клипам не дал правильной подсказки.

Я хотел бы вставить три поля в таблицу mysql
Одно из полей, которые мне нужно редактировать вручную.
Второе поле содержит всегдато же значение.
Третье поле содержит вычисленное значение, которое я должен получить во время выполнения из базы данных.

В качестве sql я бы использовал следующий код:

INSERT INTO OKM_DB_METADATA_VALUE (DMV_TABLE, DMV_COL00, DMV_COL01) 
VALUES ('T_supplier', (select * from (select max(cast(DMV_COL00 as
Integer)) +1 from OKM_DB_METADATA_VALUE as t2 where DMV_TABLE =
'T_supplier') as t3 ) , 'new suppliername');

Значение для поля DMV_Table всегда будет 'T_supplier'
Значение для поля DMV_COL00 всегда является самым высоким значением в столбце + 1
Значение для поля DMV_COL01 всегда будет вводиться вручную
(яне могу / я не хочу изменять / использовать форму таблицы, -design и trigger, потому что это оригинальная таблица OpenKM)

Заранее спасибо!
bestС уважением
OpaHeinz

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Первый шаг к решению

В событии buttonClick функции сохранения Я устанавливаю значение поля DMV_Table с помощью:

... this.txtDmvTable.setValue("T_supplier"); 

второй шаг; Я создал представление в базе данных, которое выдает только ожидаемое значение:

 `CREATE
OR REPLACE
VIEW `okmdb`.`V_suppliers_newID` AS
select
    1 as "id",
    max(cast(DMV_COL00 as Integer)) +1 as "newSupId" 
from OKM_DB_METADATA_VALUE 
where DMV_TABLE = 'T_supplier'; `

После этого я создал сущность в quickclipse, считал значение из представления и присвоил его другому полю DMV_COL00.

Это было все.

0 голосов
/ 26 апреля 2019

Просто предложение для кода SQL .. Ваш код может быть реорганизован в более SQL-подобный код .. Вы можете избежать внутреннего запроса ... и использовать обычную вставку, выберите

  INSERT INTO OKM_DB_METADATA_VALUE (DMV_TABLE, DMV_COL00, DMV_COL01) 
  select 'T_supplier', max(cast(DMV_COL00 asInteger)) +1 , 'new suppliername'
  from OKM_DB_METADATA_VALUE 
  where DMV_TABLE ='T_supplier'
...