OpenEdge Progress 12.7 - can't insert data into table after adding SQL trigger

173 views Asked by At

I'm having tons of problems with adding and using SQL triggers with OE Progress 12.7 database.

I'm using sports2020 database, user with DBA+Resources access.

I can add new rows into (for example) table PUB.BillTo without any problems, everything works as expected.

INSERT INTO PUB.BillTo (CustNum) VALUES (<number>)

But right after I add "before insert" trigger to the table (Column 2 is Integer), like this:

CREATE TRIGGER trg1406 BEFORE INSERT ON PUB.BillTo
REFERENCING NEWROW
FOR EACH ROW
BEGIN
    NEWROW.setValue(2, 1990);
END

inserting more rows stops working, and JDBC driver just returns error:

org.jkiss.dbeaver.model.sql.DBSQLException: SQL Error [HY000]: [DataDirect][OpenEdge JDBC Driver]Transliteration failed, reason: invalid UTF8 data at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:133) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeStatement(SQLQueryJob.java:582) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.lambda$1(SQLQueryJob.java:491) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeSingleQuery(SQLQueryJob.java:501) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.extractData(SQLQueryJob.java:934) at org.jkiss.dbeaver.ui.editors.sql.SQLEditor$QueryResultsContainer.readData(SQLEditor.java:3921) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.lambda$0(ResultSetJobDataRead.java:123) at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:189) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.run(ResultSetJobDataRead.java:121) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer$ResultSetDataPumpJob.run(ResultSetViewer.java:5101) at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) Caused by: java.sql.SQLException: [DataDirect][OpenEdge JDBC Driver]Transliteration failed, reason: invalid UTF8 data at com.ddtek.jdbc.openedgebase.ddb9.b(Unknown Source) at com.ddtek.jdbc.openedgebase.ddb9.a(Unknown Source) at com.ddtek.jdbc.openedgebase.ddb8.b(Unknown Source) at com.ddtek.jdbc.openedgebase.ddb8.a(Unknown Source) at com.ddtek.jdbc.openedge.client.dde.a(Unknown Source) at com.ddtek.jdbc.openedge.client.dde.af(Unknown Source) at com.ddtek.jdbc.openedge.client.dde.aa(Unknown Source) at com.ddtek.jdbc.openedge.client.dde.c(Unknown Source) at com.ddtek.jdbc.openedge.client.dde._(Unknown Source) at com.ddtek.jdbc.openedge.ddf.b(Unknown Source) at com.ddtek.jdbc.openedgebase.ddek.w(Unknown Source) at com.ddtek.jdbc.openedgebase.ddek.s(Unknown Source) at com.ddtek.jdbc.openedgebase.ddek.execute(Unknown Source) at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.execute(JDBCStatementImpl.java:330) at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:131) ... 11 more

Googling didn't help at all, since every page expects me to be reading data, but I'm actually adding them. Also, I'm not adding text, just numbers.

I tried same steps in DBeaver 23.1.2, SQLEXP (included in OE Progress) and OE Studio. Same results.

I also can't get to work more complex trigger logic with imports from Java, etc. But honestly, right now I would be happy just with this.

Can someone help me, please?

Thanks!

P.S.: Using another database system isn't an option, unfortunately.

0

There are 0 answers