Good day to everyone!
I have found an error in the trigger’s work for Sap Hana 1.00.102.01.1444147999
We create a test example
DROP TRIGGER TRIGGER_TAB_A;
DROP TABLE TAB_A;
DROP TABLE TAB_B;
CREATE COLUMN TABLE TAB_A (
id INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1 INCREMENT BY 1) ,
val INTEGER
);
INSERT INTO TAB_A(val) VALUES(15);
CREATE COLUMN TABLE TAB_B (
id INTEGER,
val INTEGER
);
CREATE TRIGGER TRIGGER_TAB_A
AFTER UPDATE ON TAB_A
REFERENCING NEW ROW newrow
FOR EACH ROW
BEGIN
INSERT INTO TAB_B(id, val) values ( :newrow.id, :newrow.val);
END;
1) We update table TAB_A
UPDATE TAB_A
set val = 12
WHERE val = 15;
While we are updating the table the error occurs.
Could not execute 'UPDATE tab_a set val = 12 WHERE val = 15' in 15 ms 917 µs .
[129]: transaction rolled back by an internal error: "AERO"."TRIGGER_TAB_A": line 3 col 2 (at pos 118): [129] (range 3): transaction rolled back by an internal error: exception 1000003: Index 59832 out of range [0, 4)
2) We change the trigger and try to update table TAB_A
DROP TRIGGER TRIGGER_TAB_A;
CREATE TRIGGER TRIGGER_TAB_A
AFTER UPDATE ON TAB_A
REFERENCING NEW ROW newrow
FOR EACH ROW
BEGIN
DECLARE vId INTEGER;
INSERT INTO TAB_B(id, val) values ( :newrow.id, :newrow.val);
END;
UPDATE TAB_A
set val = 12
WHERE val = 15;
There is no error, but the record in table TAB_B differs from the record in table TAB_A