mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-31 18:43:03 +01:00
191 lines
5.3 KiB
MySQL
191 lines
5.3 KiB
MySQL
|
CREATE GENERATOR CHANGE_NUM;
|
||
|
|
||
|
/* Domain definitions */
|
||
|
CREATE DOMAIN D_ACTION AS BLOB SUB_TYPE 0 SEGMENT SIZE 0;
|
||
|
CREATE DOMAIN CHANGE_DATE AS TIMESTAMP;
|
||
|
CREATE DOMAIN CHANGE_NUMBER AS INTEGER;
|
||
|
CREATE DOMAIN CHANGE_WHO AS VARCHAR(32);
|
||
|
CREATE DOMAIN CLASS AS CHAR(10);
|
||
|
CREATE DOMAIN DESCRIPTION AS BLOB SUB_TYPE 0 SEGMENT SIZE 80;
|
||
|
CREATE DOMAIN EXPLANATION AS BLOB SUB_TYPE 0 SEGMENT SIZE 0;
|
||
|
CREATE DOMAIN FACILITY AS CHAR(10);
|
||
|
CREATE DOMAIN FAC_CODE AS SMALLINT;
|
||
|
CREATE DOMAIN D_FILE AS VARCHAR(30);
|
||
|
CREATE DOMAIN FLAGS AS SMALLINT;
|
||
|
CREATE DOMAIN LANGUAGE AS VARCHAR(10);
|
||
|
CREATE DOMAIN LAST_CHANGE AS TIMESTAMP;
|
||
|
CREATE DOMAIN LOCALE AS VARCHAR(20);
|
||
|
CREATE DOMAIN MAX_NUMBER AS SMALLINT;
|
||
|
CREATE DOMAIN MODULE AS VARCHAR(32);
|
||
|
CREATE DOMAIN NUMBER AS SMALLINT;
|
||
|
CREATE DOMAIN OLD_SEQUENCE AS SMALLINT;
|
||
|
CREATE DOMAIN ROUTINE AS VARCHAR(32);
|
||
|
CREATE DOMAIN SEQUENCE AS SMALLINT;
|
||
|
CREATE DOMAIN SEVERITY AS SMALLINT;
|
||
|
CREATE DOMAIN SEVERITY_TEXT AS CHAR(7);
|
||
|
CREATE DOMAIN SQL_CLASS AS CHAR(2);
|
||
|
CREATE DOMAIN SQL_CODE AS SMALLINT;
|
||
|
CREATE DOMAIN SQL_SUBCLASS AS CHAR(3);
|
||
|
CREATE DOMAIN SYMBOL AS VARCHAR(32);
|
||
|
CREATE DOMAIN TEMPLATE AS BLOB SUB_TYPE 0 SEGMENT SIZE 256;
|
||
|
CREATE DOMAIN TEXT AS VARCHAR(118);
|
||
|
CREATE DOMAIN TRANSLATOR AS VARCHAR(32);
|
||
|
CREATE DOMAIN TRANS_DATE AS TIMESTAMP;
|
||
|
CREATE DOMAIN TRANS_NOTES AS BLOB SUB_TYPE 0 SEGMENT SIZE 0;
|
||
|
CREATE DOMAIN D_TYPE AS CHAR(12);
|
||
|
CREATE DOMAIN D_VALUE AS INTEGER;
|
||
|
CREATE DOMAIN VMS_CODE AS INTEGER;
|
||
|
|
||
|
COMMIT;
|
||
|
|
||
|
/* Tables */
|
||
|
|
||
|
CREATE TABLE FACILITIES (
|
||
|
LAST_CHANGE LAST_CHANGE,
|
||
|
FACILITY FACILITY CONSTRAINT FAC_2 UNIQUE,
|
||
|
FAC_CODE FAC_CODE NOT NULL CONSTRAINT FAC_1 PRIMARY KEY,
|
||
|
MAX_NUMBER MAX_NUMBER
|
||
|
);
|
||
|
|
||
|
CREATE TABLE HISTORY (
|
||
|
CHANGE_NUMBER CHANGE_NUMBER,
|
||
|
CHANGE_WHO CHANGE_WHO,
|
||
|
CHANGE_DATE CHANGE_DATE,
|
||
|
FAC_CODE FAC_CODE,
|
||
|
NUMBER NUMBER,
|
||
|
OLD_TEXT TEXT,
|
||
|
OLD_ACTION D_ACTION,
|
||
|
OLD_EXPLANATION EXPLANATION,
|
||
|
LOCALE LOCALE,
|
||
|
CODE COMPUTED BY (fac_code * 10000 + number)
|
||
|
);
|
||
|
|
||
|
CREATE TABLE LOCALES (
|
||
|
LOCALE LOCALE NOT NULL CONSTRAINT PRIMARY_LOCALES PRIMARY KEY,
|
||
|
DESCRIPTION DESCRIPTION
|
||
|
);
|
||
|
|
||
|
CREATE TABLE MESSAGES (
|
||
|
SYMBOL SYMBOL,
|
||
|
ROUTINE ROUTINE,
|
||
|
MODULE MODULE,
|
||
|
TRANS_NOTES TRANS_NOTES,
|
||
|
FAC_CODE FAC_CODE,
|
||
|
NUMBER NUMBER,
|
||
|
FLAGS FLAGS,
|
||
|
TEXT TEXT,
|
||
|
"ACTION" D_ACTION,
|
||
|
EXPLANATION EXPLANATION,
|
||
|
CODE COMPUTED BY (fac_code * 10000 + number),
|
||
|
CONSTRAINT MSG_1 UNIQUE(FAC_CODE, NUMBER)
|
||
|
);
|
||
|
|
||
|
CREATE TABLE SYMBOLS (
|
||
|
SYMBOL SYMBOL NOT NULL CONSTRAINT SYM2 PRIMARY KEY,
|
||
|
"VALUE" D_VALUE,
|
||
|
CLASS CLASS,
|
||
|
"TYPE" D_TYPE,
|
||
|
SEQUENCE SEQUENCE
|
||
|
);
|
||
|
|
||
|
CREATE TABLE SYSTEM_ERRORS (
|
||
|
SQL_CODE SQL_CODE,
|
||
|
SQL_CLASS SQL_CLASS,
|
||
|
SQL_SUBCLASS SQL_SUBCLASS,
|
||
|
NUMBER NUMBER,
|
||
|
FAC_CODE FAC_CODE,
|
||
|
VMS_CODE VMS_CODE,
|
||
|
GDS_SYMBOL SYMBOL CONSTRAINT SYSERR2 UNIQUE,
|
||
|
SEVERITY SEVERITY,
|
||
|
SEVERITY_TEXT SEVERITY_TEXT,
|
||
|
CODE COMPUTED BY (FAC_CODE * 10000 + NUMBER),
|
||
|
SQL_STATE COMPUTED BY (SQL_CLASS || SQL_SUBCLASS),
|
||
|
CONSTRAINT SYSERR1 UNIQUE(FAC_CODE, NUMBER)
|
||
|
);
|
||
|
|
||
|
CREATE TABLE TEMPLATES (
|
||
|
LANGUAGE LANGUAGE,
|
||
|
"FILE" D_FILE,
|
||
|
TEMPLATE TEMPLATE
|
||
|
);
|
||
|
|
||
|
COMMIT;
|
||
|
|
||
|
CREATE TABLE TRANSMSGS (
|
||
|
ENG_TEXT TEXT,
|
||
|
ENG_ACTION D_ACTION,
|
||
|
ENG_EXPLANATION EXPLANATION,
|
||
|
FAC_CODE FAC_CODE,
|
||
|
NUMBER NUMBER,
|
||
|
LOCALE LOCALE NOT NULL CONSTRAINT UNKNOWN_LOCALE REFERENCES LOCALES,
|
||
|
TEXT TEXT,
|
||
|
"ACTION" D_ACTION,
|
||
|
EXPLANATION EXPLANATION,
|
||
|
TRANSLATOR TRANSLATOR,
|
||
|
TRANS_DATE TRANS_DATE,
|
||
|
CODE COMPUTED BY (fac_code * 10000 + number),
|
||
|
CONSTRAINT TMSG_1 UNIQUE(LOCALE, FAC_CODE, NUMBER)
|
||
|
);
|
||
|
|
||
|
COMMIT;
|
||
|
|
||
|
/* Index definitions for all user tables */
|
||
|
CREATE INDEX SYM1 ON SYMBOLS(CLASS, "TYPE");
|
||
|
|
||
|
COMMIT;
|
||
|
|
||
|
SET TERM ^ ;
|
||
|
|
||
|
/* Triggers */
|
||
|
CREATE TRIGGER FACILITIES$STORE FOR FACILITIES
|
||
|
ACTIVE BEFORE INSERT OR UPDATE POSITION 0 AS
|
||
|
begin
|
||
|
new.last_change = CURRENT_TIMESTAMP;
|
||
|
end^
|
||
|
|
||
|
CREATE TRIGGER MESSAGES$MODIFY FOR MESSAGES
|
||
|
ACTIVE AFTER UPDATE POSITION 0 AS
|
||
|
begin
|
||
|
update facilities
|
||
|
set last_change = current_timestamp
|
||
|
where fac_code = new.fac_code;
|
||
|
end^
|
||
|
|
||
|
CREATE TRIGGER MSGS$MODIFY FOR MESSAGES
|
||
|
ACTIVE AFTER UPDATE POSITION 1 AS
|
||
|
begin
|
||
|
if (new.text <> old.text) then
|
||
|
begin
|
||
|
insert into history (change_number, change_date, change_who, fac_code,
|
||
|
number, old_text, old_action, old_explanation, locale)
|
||
|
values (gen_id(change_num, 1), current_timestamp, current_user,
|
||
|
old.fac_code, old.number, old.text, old."ACTION",
|
||
|
old.explanation, 'c_pg');
|
||
|
end
|
||
|
end^
|
||
|
|
||
|
CREATE TRIGGER TRANSMSGS$STORE FOR TRANSMSGS
|
||
|
ACTIVE BEFORE INSERT POSITION 0 AS
|
||
|
begin
|
||
|
if (new.translator is NULL) then
|
||
|
new.translator = current_user;
|
||
|
if (new.trans_date is NULL) then
|
||
|
new.trans_date = current_timestamp;
|
||
|
end^
|
||
|
|
||
|
CREATE TRIGGER TRANSMSGS$MODIFY FOR TRANSMSGS
|
||
|
ACTIVE AFTER UPDATE POSITION 0 AS
|
||
|
begin
|
||
|
if (new.text <> old.text) then
|
||
|
begin
|
||
|
insert into history (change_number, change_date, change_who, fac_code,
|
||
|
number, old_text, old_action, old_explanation, locale)
|
||
|
values (gen_id(change_num, 1), current_timestamp, current_user,
|
||
|
old.fac_code, old.number, old.text, old."ACTION",
|
||
|
old.explanation, old.locale);
|
||
|
end
|
||
|
end^
|
||
|
|
||
|
COMMIT^
|
||
|
SET TERM ; ^
|