1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
|
/****************** GENERATORS ********************/
CREATE GENERATOR GEN_DROITS_ID;
CREATE GENERATOR GEN_FONCTSAPPLI_ID;
CREATE GENERATOR GEN_GROUPES_ID;
CREATE GENERATOR GEN_UTILISATEUR_ID;
/******************** DOMAINS *********************/
CREATE DOMAIN VALDROIT
AS Char(1)
DEFAULT 'N'
NOT NULL
CHECK (VALUE IN ('O','N'))
COLLATE WIN1252;
/******************* PROCEDURES ******************/
/******************** TABLES **********************/
CREATE TABLE DROITS_GROUPE
(
ID Bigint NOT NULL,
ID_GROUPE Bigint NOT NULL,
ID_FONCTION Bigint NOT NULL,
DROIT VALDROIT DEFAULT 'N',
CONSTRAINT PK_DROITGRP PRIMARY KEY (ID)
);
CREATE TABLE DROITS_UTILISATEUR
(
ID Bigint NOT NULL,
ID_UTILISATEUR Bigint NOT NULL,
ID_FONCTION Bigint NOT NULL,
DROIT VALDROIT DEFAULT 'N',
CONSTRAINT PK_DROITUTIL PRIMARY KEY (ID)
);
CREATE TABLE FONCTSAPPLI
(
ID_FONCTION Bigint NOT NULL,
DESC_FONCTION Varchar(30),
CONSTRAINT PK_FONCTION PRIMARY KEY (ID_FONCTION)
);
CREATE TABLE GROUPES
(
ID_GROUPE Bigint NOT NULL,
NOM_GROUPE Varchar(30),
CONSTRAINT PK_GROUPE PRIMARY KEY (ID_GROUPE)
);
CREATE TABLE UTILISATEUR
(
ID_UTILISATEUR Bigint NOT NULL,
LOGIN Varchar(30),
NOM Varchar(30),
PRENOM Varchar(30),
ID_GROUPE Bigint NOT NULL,
MDP Varchar(30),
CONSTRAINT PK_UTILISATEUR PRIMARY KEY (ID_UTILISATEUR)
);
/********************* VIEWS **********************/
/******************* EXCEPTIONS *******************/
/******************** TRIGGERS ********************/
SET TERM ^ ;
CREATE TRIGGER DROITS_GROUPE_BI FOR DROITS_GROUPE ACTIVE
BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE tmp DECIMAL(18,0);
BEGIN
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(GEN_DROITS_ID, 1);
ELSE
BEGIN
tmp = GEN_ID(GEN_DROITS_ID, 0);
if (tmp < new.ID) then
tmp = GEN_ID(GEN_DROITS_ID, new.ID-tmp);
END
END^
SET TERM ; ^
SET TERM ^ ;
CREATE TRIGGER DROITS_UTILISATEUR_BI FOR DROITS_UTILISATEUR ACTIVE
BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE tmp DECIMAL(18,0);
BEGIN
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(GEN_DROITS_ID, 1);
ELSE
BEGIN
tmp = GEN_ID(GEN_DROITS_ID, 0);
if (tmp < new.ID) then
tmp = GEN_ID(GEN_DROITS_ID, new.ID-tmp);
END
END^
SET TERM ; ^
SET TERM ^ ;
CREATE TRIGGER FONCTSAPPLI_BI FOR FONCTSAPPLI ACTIVE
BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE tmp DECIMAL(18,0);
BEGIN
IF (NEW.ID_FONCTION IS NULL) THEN
NEW.ID_FONCTION = GEN_ID(GEN_FONCTSAPPLI_ID, 1);
ELSE
BEGIN
tmp = GEN_ID(GEN_FONCTSAPPLI_ID, 0);
if (tmp < new.ID_FONCTION) then
tmp = GEN_ID(GEN_FONCTSAPPLI_ID, new.ID_FONCTION-tmp);
END
END^
SET TERM ; ^
SET TERM ^ ;
CREATE TRIGGER GROUPES_BI FOR GROUPES ACTIVE
BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE tmp DECIMAL(18,0);
BEGIN
IF (NEW.ID_GROUPE IS NULL) THEN
NEW.ID_GROUPE = GEN_ID(GEN_GROUPES_ID, 1);
ELSE
BEGIN
tmp = GEN_ID(GEN_GROUPES_ID, 0);
if (tmp < new.ID_GROUPE) then
tmp = GEN_ID(GEN_GROUPES_ID, new.ID_GROUPE-tmp);
END
END^
SET TERM ; ^
SET TERM ^ ;
CREATE TRIGGER UTILISATEUR_BI FOR UTILISATEUR ACTIVE
BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE tmp DECIMAL(18,0);
BEGIN
IF (NEW.ID_UTILISATEUR IS NULL) THEN
NEW.ID_UTILISATEUR = GEN_ID(GEN_UTILISATEUR_ID, 1);
ELSE
BEGIN
tmp = GEN_ID(GEN_UTILISATEUR_ID, 0);
if (tmp < new.ID_UTILISATEUR) then
tmp = GEN_ID(GEN_UTILISATEUR_ID, new.ID_UTILISATEUR-tmp);
END
END^
SET TERM ; ^
ALTER TABLE DROITS_GROUPE ADD CONSTRAINT FK_DROITS_GROUPE_F
FOREIGN KEY (ID_FONCTION) REFERENCES FONCTSAPPLI (ID_FONCTION) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE DROITS_GROUPE ADD CONSTRAINT FK_DROITS_GROUPE_G
FOREIGN KEY (ID_GROUPE) REFERENCES GROUPES (ID_GROUPE) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE DROITS_UTILISATEUR ADD CONSTRAINT FK_DROITS_UTILISATEUR_F
FOREIGN KEY (ID_FONCTION) REFERENCES FONCTSAPPLI (ID_FONCTION) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE DROITS_UTILISATEUR ADD CONSTRAINT FK_DROITS_UTILISATEUR_U
FOREIGN KEY (ID_UTILISATEUR) REFERENCES UTILISATEUR (ID_UTILISATEUR) ON UPDATE CASCADE ON DELETE CASCADE;
CREATE UNIQUE INDEX IDX_NOMFONCTION ON FONCTSAPPLI (DESC_FONCTION);
CREATE UNIQUE INDEX IDX_NOMGROUPES ON GROUPES (NOM_GROUPE);
ALTER TABLE UTILISATEUR ADD CONSTRAINT FK_UTILISATEUR_GROUPE
FOREIGN KEY (ID_GROUPE) REFERENCES GROUPES (ID_GROUPE) ON UPDATE CASCADE ON DELETE CASCADE;
CREATE UNIQUE INDEX IDX_LOGINUTILISATEUR ON UTILISATEUR (LOGIN);
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
ON DROITS_GROUPE TO SYSDBA WITH GRANT OPTION;
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
ON DROITS_UTILISATEUR TO SYSDBA WITH GRANT OPTION;
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
ON FONCTSAPPLI TO SYSDBA WITH GRANT OPTION;
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
ON GROUPES TO SYSDBA WITH GRANT OPTION;
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
ON UTILISATEUR TO SYSDBA WITH GRANT OPTION; |
Partager