CREATE SEQUENCE objecttypes_id_SEQ MINVALUE 1 MAXVALUE 999999999999999999999999 INCREMENT BY 1 NOCYCLE
Sequence created.
CREATE TABLE objecttypes (
id NUMBER(24,0) NOT NULL,
objecttype VARCHAR2(255 CHAR)
)
Table created.
ALTER TABLE objecttypes ADD CONSTRAINT PRIMARY_7 PRIMARY KEY ( id ) ENABLE
Table altered.
CREATE UNIQUE INDEX idx_objecttypes_objecttype ON objecttypes( objecttype )
Index created.
CREATE OR REPLACE TRIGGER objecttypes_id_TRG BEFORE INSERT ON objecttypes
FOR EACH ROW
DECLARE
v_newVal NUMBER(12) := 0;
v_incval NUMBER(12) := 0;
BEGIN
IF INSERTING AND :new.id IS NULL THEN
SELECT objecttypes_id_SEQ.NEXTVAL INTO v_newVal FROM DUAL;
-- If this is the first time this table have been inserted into (sequence == 1)
IF v_newVal = 1 THEN
--get the max indentity value from the table
SELECT NVL(max(id),0) INTO v_newVal FROM objecttypes;
v_newVal := v_newVal + 1;
--set the sequence to that value
LOOP
EXIT WHEN v_incval>=v_newVal;
SELECT objecttypes_id_SEQ.nextval INTO v_incval FROM dual;
END LOOP;
END IF;
--used to emulate LAST_INSERT_ID()
--mysql_utilities.identity := v_newVal;
-- assign the value from the sequence to emulate the identity column
:new.id := v_newVal;
END IF;
END;
Trigger created.
insert into objecttypes (objecttype) values ('managed/user')
1 row(s) inserted.
insert into objecttypes (objecttype) values ('managed/credential')
1 row(s) inserted.
select * from objecttypes
ID | OBJECTTYPE | 1 | managed/user | 3 | managed/credential |
---|
CREATE TABLE objecttypes_mv (
id NUMBER(24,0) GENERATED BY DEFAULT ON NULL AS IDENTITY,
objecttype VARCHAR2(255 CHAR) NOT NULL
)
Table created.
ALTER TABLE objecttypes_mv ADD CONSTRAINT primary_objecttypes_mv_id PRIMARY KEY ( id ) ENABLE
Table altered.
CREATE UNIQUE INDEX idx_objecttypes_mv_objecttype ON objecttypes_mv( objecttype )
Index created.
create materialized view log on objecttypes WITH PRIMARY KEY ( OBJECTTYPE ) INCLUDING NEW VALUES
Statement processed.
CREATE MATERIALIZED VIEW
objecttypes_mv
ON PREBUILT TABLE
REFRESH FAST ON COMMIT
as
SELECT *
FROM objecttypes
ORA-32792: prebuilt table managed column cannot be an identity columnMore Details: https://docs.oracle.com/error-help/db/ora-32792