Add SQL for Oracle at section USERS and revise ACL

I feel very painful when using SQL script for Oracle database. I set datatype, number(18), number(38) is too big, all character is uppercase (because Oracle database is case-insensitive). ACL's SQL script has script for Oracle database, but section USERS, AUTHORITIES has not SQL scrip for Oracle database, therefore I add more.
This commit is contained in:
Do Nhu Vy 2018-08-18 23:25:29 +07:00 committed by Rob Winch
parent 7f04d8d893
commit 594cacb0d6

View File

@ -28,6 +28,24 @@ create table authorities (
create unique index ix_auth_username on authorities (username,authority); create unique index ix_auth_username on authorities (username,authority);
---- ----
=== For Oracle database
[source]
----
CREATE TABLE USERS (
USERNAME NVARCHAR2(128) NOT NULL PRIMARY KEY,
PASSWORD NVARCHAR2(128) NOT NULL,
ENABLED CHAR(1) CHECK (ENABLED IN ('Y','N') ) NOT NULL
);
CREATE TABLE AUTHORITIES (
USERNAME NVARCHAR2(128) NOT NULL,
AUTHORITY NVARCHAR2(128) NOT NULL
);
ALTER TABLE AUTHORITIES ADD CONSTRAINT AUTHORITIES_UNIQUE UNIQUE (USERNAME, AUTHORITY);
ALTER TABLE AUTHORITIES ADD CONSTRAINT AUTHORITIES_FK1 FOREIGN KEY (USERNAME) REFERENCES USERS (USERNAME) ENABLE;
----
==== Group Authorities ==== Group Authorities
Spring Security 2.0 introduced support for group authorities in `JdbcDaoImpl`. Spring Security 2.0 introduced support for group authorities in `JdbcDaoImpl`.
The table structure if groups are enabled is as follows. The table structure if groups are enabled is as follows.
@ -282,71 +300,66 @@ CREATE TABLE acl_entry (
==== Oracle Database ==== Oracle Database
[source,ddl] [source,ddl]
---- ----
CREATE TABLE acl_sid ( CREATE TABLE ACL_SID (
id NUMBER(38) NOT NULL PRIMARY KEY, ID NUMBER(18) PRIMARY KEY,
principal NUMBER(1) NOT NULL CHECK (principal in (0, 1)), PRINCIPAL NUMBER(1) NOT NULL CHECK (PRINCIPAL IN (0, 1 )),
sid NVARCHAR2(100) NOT NULL, SID NVARCHAR2(128) NOT NULL,
CONSTRAINT unique_acl_sid UNIQUE (sid, principal) CONSTRAINT ACL_SID_UNIQUE UNIQUE (SID, PRINCIPAL)
); );
CREATE SEQUENCE acl_sid_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE; CREATE SEQUENCE ACL_SID_SQ START WITH 1 INCREMENT BY 1 NOMAXVALUE;
CREATE OR REPLACE TRIGGER acl_sid_id_trigger CREATE OR REPLACE TRIGGER ACL_SID_SQ_TR BEFORE INSERT ON ACL_SID FOR EACH ROW
BEFORE INSERT ON acl_sid
FOR EACH ROW
BEGIN BEGIN
SELECT acl_sid_sequence.nextval INTO :new.id FROM dual; SELECT ACL_SID_SQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END; END;
CREATE TABLE acl_class (
id NUMBER(38) NOT NULL PRIMARY KEY, CREATE TABLE ACL_CLASS (
class NVARCHAR2(100) NOT NULL, ID NUMBER(18) PRIMARY KEY,
CONSTRAINT uk_acl_class UNIQUE (class) CLASS NVARCHAR2(128) NOT NULL,
CONSTRAINT ACL_CLASS_UNIQUE UNIQUE (CLASS)
); );
CREATE SEQUENCE acl_class_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE; CREATE SEQUENCE ACL_CLASS_SQ START WITH 1 INCREMENT BY 1 NOMAXVALUE;
CREATE OR REPLACE TRIGGER acl_class_id_trigger CREATE OR REPLACE TRIGGER ACL_CLASS_ID_TR BEFORE INSERT ON ACL_CLASS FOR EACH ROW
BEFORE INSERT ON acl_class
FOR EACH ROW
BEGIN BEGIN
SELECT acl_class_sequence.nextval INTO :new.id FROM dual; SELECT ACL_CLASS_SQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END; END;
CREATE TABLE acl_object_identity (
id NUMBER(38) NOT NULL PRIMARY KEY, CREATE TABLE ACL_OBJECT_IDENTITY(
object_id_class NUMBER(38) NOT NULL, ID NUMBER(18) PRIMARY KEY,
object_id_identity NVARCHAR2(36) NOT NULL, OBJECT_ID_CLASS NUMBER(18) NOT NULL,
parent_object NUMBER(38), OBJECT_ID_IDENTITY NVARCHAR2(64) NOT NULL,
owner_sid NUMBER(38), PARENT_OBJECT NUMBER(18),
entries_inheriting NUMBER(1) NOT NULL CHECK (entries_inheriting in (0, 1)), OWNER_SID NUMBER(18),
CONSTRAINT uk_acl_object_identity UNIQUE (object_id_class, object_id_identity), ENTRIES_INHERITING NUMBER(1) NOT NULL CHECK (ENTRIES_INHERITING IN (0, 1)),
CONSTRAINT fk_acl_object_identity_parent FOREIGN KEY (parent_object) REFERENCES acl_object_identity (id), CONSTRAINT ACL_OBJECT_IDENTITY_UNIQUE UNIQUE (OBJECT_ID_CLASS, OBJECT_ID_IDENTITY),
CONSTRAINT fk_acl_object_identity_class FOREIGN KEY (object_id_class) REFERENCES acl_class (id), CONSTRAINT ACL_OBJECT_IDENTITY_PARENT_FK FOREIGN KEY (PARENT_OBJECT) REFERENCES ACL_OBJECT_IDENTITY(ID),
CONSTRAINT fk_acl_object_identity_owner FOREIGN KEY (owner_sid) REFERENCES acl_sid (id) CONSTRAINT ACL_OBJECT_IDENTITY_CLASS_FK FOREIGN KEY (OBJECT_ID_CLASS) REFERENCES ACL_CLASS(ID),
CONSTRAINT ACL_OBJECT_IDENTITY_OWNER_FK FOREIGN KEY (OWNER_SID) REFERENCES ACL_SID(ID)
); );
CREATE SEQUENCE acl_object_identity_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE; CREATE SEQUENCE ACL_OBJECT_IDENTITY_SQ START WITH 1 INCREMENT BY 1 NOMAXVALUE;
CREATE OR REPLACE TRIGGER acl_object_identity_id_trigger CREATE OR REPLACE TRIGGER ACL_OBJECT_IDENTITY_ID_TR BEFORE INSERT ON ACL_OBJECT_IDENTITY FOR EACH ROW
BEFORE INSERT ON acl_object_identity
FOR EACH ROW
BEGIN BEGIN
SELECT acl_object_identity_sequence.nextval INTO :new.id FROM dual; SELECT ACL_OBJECT_IDENTITY_SQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END; END;
CREATE TABLE acl_entry (
id NUMBER(38) NOT NULL PRIMARY KEY, CREATE TABLE ACL_ENTRY (
acl_object_identity NUMBER(38) NOT NULL, ID NUMBER(18) NOT NULL PRIMARY KEY,
ace_order INTEGER NOT NULL, ACL_OBJECT_IDENTITY NUMBER(18) NOT NULL,
sid NUMBER(38) NOT NULL, ACE_ORDER INTEGER NOT NULL,
mask INTEGER NOT NULL, SID NUMBER(18) NOT NULL,
granting NUMBER(1) NOT NULL CHECK (granting in (0, 1)), MASK INTEGER NOT NULL,
audit_success NUMBER(1) NOT NULL CHECK (audit_success in (0, 1)), GRANTING NUMBER(1) NOT NULL CHECK (GRANTING IN (0, 1)),
audit_failure NUMBER(1) NOT NULL CHECK (audit_failure in (0, 1)), AUDIT_SUCCESS NUMBER(1) NOT NULL CHECK (AUDIT_SUCCESS IN (0, 1)),
CONSTRAINT unique_acl_entry UNIQUE (acl_object_identity, ace_order), AUDIT_FAILURE NUMBER(1) NOT NULL CHECK (AUDIT_FAILURE IN (0, 1)),
CONSTRAINT fk_acl_entry_object FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity (id), CONSTRAINT ACL_ENTRY_UNIQUE UNIQUE (ACL_OBJECT_IDENTITY, ACE_ORDER),
CONSTRAINT fk_acl_entry_acl FOREIGN KEY (sid) REFERENCES acl_sid (id) CONSTRAINT ACL_ENTRY_OBJECT_FK FOREIGN KEY (ACL_OBJECT_IDENTITY) REFERENCES ACL_OBJECT_IDENTITY (ID),
CONSTRAINT ACL_ENTRY_ACL_FK FOREIGN KEY (SID) REFERENCES ACL_SID(ID)
); );
CREATE SEQUENCE acl_entry_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE; CREATE SEQUENCE ACL_ENTRY_SQ START WITH 1 INCREMENT BY 1 NOMAXVALUE;
CREATE OR REPLACE TRIGGER acl_entry_id_trigger CREATE OR REPLACE TRIGGER ACL_ENTRY_ID_TRIGGER BEFORE INSERT ON ACL_ENTRY FOR EACH ROW
BEFORE INSERT ON acl_entry
FOR EACH ROW
BEGIN BEGIN
SELECT acl_entry_sequence.nextval INTO :new.id FROM dual; SELECT ACL_ENTRY_SQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END; END;
---- ----