I have finally moved to version 6.0 which was fixing the reverse bug Number(10) => Int64.
The new fonctionnality Update from/to Database/Model has major impacts
on Context.CreateDatabaseScript() function.
here are two tables creation difference :
Code: Select all
--
-- Devart v5.7
--
-- context.CreateDatabaseScript();
--
-- Table AUTOSEM.OPERATION_TYPE
--
CREATE TABLE AUTOSEM.OPERATION_TYPE (
ID NUMBER(18) NOT NULL,
NAME NVARCHAR2(256) NULL,
CODE NVARCHAR2(40) NULL,
CREATE_LOG_ID NUMBER(18) NULL,
UPDATE_LOG_ID NUMBER(18) NULL,
IS_DELETED NUMBER(1) NULL
);
ALTER TABLE AUTOSEM.OPERATION_TYPE
ADD CONSTRAINT PK_OPERATION_TYPE PRIMARY KEY (ID);
----------------------------------------------------------------
----------------------------------------------------------------
--
-- Devart v6.x
--
-- context.CreateDatabaseScript();
--
-- Table AUTOSEM.OPERATION_TYPE
--
CREATE TABLE AUTOSEM.OPERATION_TYPE (
ID NUMBER(18) NOT NULL,
NAME NVARCHAR2(128) NULL,
CODE NVARCHAR2(20) NULL,
CREATE_LOG_ID NUMBER(18) NULL,
UPDATE_LOG_ID NUMBER(18) NULL,
IS_DELETED NUMBER(1) NULL,
PRIMARY KEY (ID)
);
CREATE SEQUENCE AUTOSEM.OPERATION_TYPE_SEQ;
CREATE OR REPLACE TRIGGER AUTOSEM.OPERATION_TYPE_INS_TRG
BEFORE INSERT ON AUTOSEM.OPERATION_TYPE
FOR EACH ROW
BEGIN
SELECT OPERATION_TYPE_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
;First quick remark note this last ";" is a bug in DDL code generation.
the major (and some annoying) differences are :
- PK constraint are not named anymore.
As a consequence it is not possible anymore to move the PK to a tablespace different from the table tablespace
Code: Select all
ALTER INDEX PK_OPERATION_TYPE REBUILD TABLESPACE AUTOSEM_IDX
Code: Select all
CREATE SEQUENCE AUTOSEM.SEQ_OPERATION_TYPE_ID;
DROP TRIGGER AUTOSEM.TS_OPERATION_TYPE_SEQ_OPERAT_0;
CREATE OR REPLACE TRIGGER AUTOSEM.TS_OPERATION_TYPE_SEQ_OPERAT_0 BEFORE INSERT
ON AUTOSEM.OPERATION_TYPE FOR EACH ROW
BEGIN
SELECT SEQ_OPERATION_TYPE_ID.nextval INTO :new.Id FROM DUAL;
END;
/Further note/remark : The PK field / StoreGeneratedPattern identity is not "protected" with an Update trigger.
Code: Select all
DROP TRIGGER BOTECH.TSU_OPERATION_TYPE_SEQ_OPERAT_0;
CREATE OR REPLACE TRIGGER BOTECH.TSU_OPERATION_TYPE_SEQ_OPERAT_0 AFTER UPDATE OF Id
ON BOTECH.OPERATION_TYPE FOR EACH ROW
BEGIN
RAISE_APPLICATION_ERROR(-20010,'Cannot update column Id in table Operation_Type as it uses sequence.');
END;
/Is this an omission/bug or will it stay like this in the future ?
best regards
Francis de Fouchier