Как изменить функцию сохранения группы полей?
Я создал страницу для вставки и изменения данных существующей таблицы 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)
Заранее спасибо!
с уважением
OpaHeinz
2 ответа
Просто предложение для кода 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'
Первый шаг к решению
В событии 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.
Это было все.