1. PostgreSQL copy of all MySQL created and tested.\n 2. Purchase Orders and Sales Orders and stock level management added to MySQL, PostgreSQL, and server and front end code.
This commit is contained in:
824
static/MySQL/deprecated/000_init_tables_authentication.sql
Normal file
824
static/MySQL/deprecated/000_init_tables_authentication.sql
Normal file
@@ -0,0 +1,824 @@
|
||||
/* Store */
|
||||
USE PARTSLTD_PROD;
|
||||
|
||||
# Drop dependencies
|
||||
# DROP PROCEDURE IF EXISTS p_shop_user_eval;
|
||||
DROP TABLE IF EXISTS User_Eval_Temp;
|
||||
|
||||
# Delete old tables
|
||||
DROP TABLE IF EXISTS Shop_Address_Audit;
|
||||
DROP TABLE IF EXISTS Shop_Address;
|
||||
|
||||
DROP TABLE IF EXISTS Shop_User_Role_Link_Audit;
|
||||
DROP TABLE IF EXISTS Shop_User_Role_Link;
|
||||
|
||||
DROP TABLE IF EXISTS Shop_User_Audit;
|
||||
DROP TABLE IF EXISTS Shop_User;
|
||||
|
||||
DROP TABLE IF EXISTS Shop_Role_Permission_Link_Audit;
|
||||
DROP TABLE IF EXISTS Shop_Role_Permission_Link;
|
||||
|
||||
DROP TABLE IF EXISTS Shop_Role_Audit;
|
||||
DROP TABLE IF EXISTS Shop_Role;
|
||||
|
||||
DROP TABLE IF EXISTS Shop_Permission_Audit;
|
||||
DROP TABLE IF EXISTS Shop_Permission;
|
||||
|
||||
DROP TABLE IF EXISTS Shop_Permission_Group_Audit;
|
||||
DROP TABLE IF EXISTS Shop_Permission_Group;
|
||||
|
||||
DROP TABLE IF EXISTS Shop_Access_Level_Audit;
|
||||
DROP TABLE IF EXISTS Shop_Access_Level;
|
||||
|
||||
DROP TABLE IF EXISTS Shop_User_Change_Set;
|
||||
|
||||
|
||||
|
||||
# User Change Sets
|
||||
CREATE TABLE Shop_User_Change_Set (
|
||||
id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
comment VARCHAR(500),
|
||||
updated_last_on DATETIME,
|
||||
updated_last_by VARCHAR(100)
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_insert_Shop_User_Change_Set
|
||||
BEFORE INSERT ON Shop_User_Change_Set
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.updated_last_on <=> NULL THEN
|
||||
SET NEW.updated_last_on = NOW();
|
||||
END IF;
|
||||
IF NEW.updated_last_by <=> NULL THEN
|
||||
SET NEW.updated_last_by = CURRENT_USER();
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
SELECT * FROM Shop_User_Change_Set;
|
||||
|
||||
|
||||
|
||||
# Access Levels
|
||||
CREATE TABLE Shop_Access_Level (
|
||||
id_access_level INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(50),
|
||||
name VARCHAR(255),
|
||||
priority INT NOT NULL,
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
display_order INT NOT NULL,
|
||||
created_on DATETIME,
|
||||
created_by VARCHAR(100),
|
||||
id_change_set INT,
|
||||
CONSTRAINT FK_Shop_Access_Level_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_insert_Shop_Access_Level
|
||||
BEFORE INSERT ON Shop_Access_Level
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.created_on <=> NULL THEN
|
||||
SET NEW.created_on = NOW();
|
||||
END IF;
|
||||
IF NEW.created_by <=> NULL THEN
|
||||
SET NEW.created_by = CURRENT_USER();
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CREATE TABLE Shop_Access_Level_Audit (
|
||||
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_access_level INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Access_Level_Audit_id_access_level
|
||||
FOREIGN KEY (id_access_level)
|
||||
REFERENCES Shop_Access_Level(id_access_level)
|
||||
ON UPDATE RESTRICT,
|
||||
name_field VARCHAR(50),
|
||||
value_prev VARCHAR(500),
|
||||
value_new VARCHAR(500),
|
||||
id_change_set INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Access_Level_Audit_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_update_Shop_Access_Level
|
||||
BEFORE UPDATE ON Shop_Access_Level
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO Shop_Access_Level_Audit (
|
||||
id_access_level,
|
||||
name_field,
|
||||
value_prev,
|
||||
value_new,
|
||||
id_change_set
|
||||
)
|
||||
# Changed code
|
||||
SELECT NEW.id_access_level, 'code', OLD.code, NEW.code, NEW.id_change_set
|
||||
WHERE NOT (OLD.code <=> NEW.code)
|
||||
UNION
|
||||
# Changed name
|
||||
SELECT NEW.id_access_level, 'name', OLD.name, NEW.name, NEW.id_change_set
|
||||
WHERE NOT (OLD.name <=> NEW.name)
|
||||
UNION
|
||||
# Changed priority
|
||||
SELECT NEW.id_access_level, 'priority', CONVERT(OLD.priority, CHAR), CONVERT(NEW.priority, CHAR), NEW.id_change_set
|
||||
WHERE NOT (OLD.priority <=> NEW.priority)
|
||||
UNION
|
||||
# Changed active
|
||||
SELECT NEW.id_access_level, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set
|
||||
WHERE NOT (OLD.active <=> NEW.active)
|
||||
;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
INSERT INTO Shop_Access_Level (
|
||||
display_order, code, name, priority
|
||||
)
|
||||
VALUES
|
||||
(1, 'VIEW', 'View', 3),
|
||||
(2, 'EDIT', 'Edit', 2),
|
||||
(3, 'ADMIN', 'Admin', 1)
|
||||
;
|
||||
|
||||
SELECT * FROM Shop_Access_Level;
|
||||
SELECT * FROM Shop_Access_Level_Audit;
|
||||
|
||||
|
||||
|
||||
# Permission Groups
|
||||
CREATE TABLE Shop_Permission_Group (
|
||||
id_group INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(50),
|
||||
name VARCHAR(255),
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
display_order INT NOT NULL,
|
||||
created_on DATETIME,
|
||||
created_by VARCHAR(100),
|
||||
id_change_set INT,
|
||||
CONSTRAINT FK_Shop_Permission_Group_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
ON UPDATE RESTRICT
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_insert_Shop_Permission_Group
|
||||
BEFORE INSERT ON Shop_Permission_Group
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.created_on <=> NULL THEN
|
||||
SET NEW.created_on = NOW();
|
||||
END IF;
|
||||
IF NEW.created_by <=> NULL THEN
|
||||
SET NEW.created_by = CURRENT_USER();
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CREATE TABLE Shop_Permission_Group_Audit (
|
||||
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_group INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Permission_Group_Audit_id_group
|
||||
FOREIGN KEY (id_group)
|
||||
REFERENCES Shop_Permission_Group(id_group)
|
||||
ON UPDATE RESTRICT,
|
||||
name_field VARCHAR(50),
|
||||
value_prev VARCHAR(500),
|
||||
value_new VARCHAR(500),
|
||||
id_change_set INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Permission_Group_Audit_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
ON UPDATE RESTRICT
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_update_Shop_Permission_Group
|
||||
BEFORE UPDATE ON Shop_Permission_Group
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO Shop_Permission_Group_Audit (
|
||||
id_group,
|
||||
name_field,
|
||||
value_prev,
|
||||
value_new,
|
||||
id_change_set
|
||||
)
|
||||
# Changed code
|
||||
SELECT NEW.id_group, 'code', OLD.code, NEW.code, NEW.id_change_set
|
||||
WHERE NOT OLD.code <=> NEW.code
|
||||
UNION
|
||||
# Changed name
|
||||
SELECT NEW.id_group, 'name', OLD.name, NEW.name, NEW.id_change_set
|
||||
WHERE NOT OLD.name <=> NEW.name
|
||||
UNION
|
||||
# Changed active
|
||||
SELECT NEW.id_group, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set
|
||||
WHERE NOT (OLD.active <=> NEW.active)
|
||||
;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
INSERT INTO Shop_Permission_Group (
|
||||
display_order, code, name
|
||||
)
|
||||
VALUES
|
||||
(1, 'STORE', 'Store Home')
|
||||
;
|
||||
|
||||
SELECT * FROM Shop_Permission_Group;
|
||||
SELECT * FROM Shop_Permission_Group_Audit;
|
||||
|
||||
|
||||
|
||||
# Permissions
|
||||
CREATE TABLE Shop_Permission (
|
||||
id_permission INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(50),
|
||||
name VARCHAR(255),
|
||||
id_permission_group INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Permission_id_permission_group
|
||||
FOREIGN KEY (id_permission_group)
|
||||
REFERENCES Shop_Permission_Group(id_group)
|
||||
ON UPDATE RESTRICT,
|
||||
required_access_level INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Permission_id_access_level
|
||||
FOREIGN KEY (required_access_level)
|
||||
REFERENCES Shop_Access_Level(id_access_level),
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
display_order INT NOT NULL,
|
||||
created_on DATETIME,
|
||||
created_by VARCHAR(100),
|
||||
id_change_set INT,
|
||||
CONSTRAINT FK_Shop_Permission_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_insert_Shop_Permission
|
||||
BEFORE INSERT ON Shop_Permission
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.created_on <=> NULL THEN
|
||||
SET NEW.created_on = NOW();
|
||||
END IF;
|
||||
IF NEW.created_by <=> NULL THEN
|
||||
SET NEW.created_by = CURRENT_USER();
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CREATE TABLE Shop_Permission_Audit (
|
||||
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_permission INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Permission_Audit_id_permission
|
||||
FOREIGN KEY (id_permission)
|
||||
REFERENCES Shop_Permission(id_permission)
|
||||
ON UPDATE RESTRICT,
|
||||
name_field VARCHAR(50),
|
||||
value_prev VARCHAR(500),
|
||||
value_new VARCHAR(500),
|
||||
id_change_set INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Permission_Audit_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
ON UPDATE RESTRICT
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_update_Shop_Permission
|
||||
BEFORE UPDATE ON Shop_Permission
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO Shop_Permission_Audit (
|
||||
id_permission,
|
||||
name_field,
|
||||
value_prev,
|
||||
value_new,
|
||||
id_change_set
|
||||
)
|
||||
# Changed code
|
||||
SELECT NEW.id_permission, 'code', OLD.code, NEW.code, NEW.id_change_set
|
||||
WHERE NOT OLD.code <=> NEW.code
|
||||
UNION
|
||||
# Changed name
|
||||
SELECT NEW.id_permission, 'name', OLD.name, NEW.name, NEW.id_change_set
|
||||
WHERE NOT OLD.name <=> NEW.name
|
||||
UNION
|
||||
# Changed id_permission_group
|
||||
SELECT NEW.id_permission, 'id_permission_group', CONVERT(OLD.id_permission_group, CHAR), CONVERT(NEW.id_permission_group, CHAR), NEW.id_change_set
|
||||
WHERE NOT OLD.id_permission_group <=> NEW.id_permission_group
|
||||
UNION
|
||||
# Changed required_access_level
|
||||
SELECT NEW.id_permission, 'required_access_level', CONVERT(OLD.required_access_level, CHAR), CONVERT(NEW.required_access_level, CHAR), NEW.id_change_set
|
||||
WHERE NOT OLD.required_access_level <=> NEW.required_access_level
|
||||
UNION
|
||||
# Changed active
|
||||
SELECT NEW.id_permission, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set
|
||||
WHERE NOT (OLD.active <=> NEW.active)
|
||||
;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
INSERT INTO Shop_Permission (
|
||||
display_order, code, name, id_permission_group, required_access_level
|
||||
)
|
||||
VALUES
|
||||
(1, 'STORE_PRODUCT', 'Store Product Page', 1, 1),
|
||||
(2, 'STORE_SERVICES', 'Store Services Page', 1, 1),
|
||||
(3, 'CONTACT_US', 'Contact Us Page', 1, 1)
|
||||
;
|
||||
|
||||
SELECT * FROM Shop_Permission;
|
||||
SELECT * FROM Shop_Permission_Audit;
|
||||
|
||||
|
||||
|
||||
# Roles
|
||||
CREATE TABLE Shop_Role (
|
||||
id_role INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(50),
|
||||
name VARCHAR(255),
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
display_order INT NOT NULL,
|
||||
created_on DATETIME,
|
||||
created_by VARCHAR(100),
|
||||
id_change_set INT,
|
||||
CONSTRAINT FK_Shop_Role_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_insert_Shop_Role
|
||||
BEFORE INSERT ON Shop_Role
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.created_on <=> NULL THEN
|
||||
SET NEW.created_on = NOW();
|
||||
END IF;
|
||||
IF NEW.created_by <=> NULL THEN
|
||||
SET NEW.created_by = CURRENT_USER();
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CREATE TABLE Shop_Role_Audit (
|
||||
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_role INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Role_Audit_id_role
|
||||
FOREIGN KEY (id_role)
|
||||
REFERENCES Shop_Role(id_role)
|
||||
ON UPDATE RESTRICT,
|
||||
name_field VARCHAR(50),
|
||||
value_prev VARCHAR(500),
|
||||
value_new VARCHAR(500),
|
||||
id_change_set INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Role_Audit_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
ON UPDATE RESTRICT
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_update_Shop_Role
|
||||
BEFORE UPDATE ON Shop_Role
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO Shop_Role_Audit (
|
||||
id_role,
|
||||
name_field,
|
||||
value_prev,
|
||||
value_new,
|
||||
id_change_set
|
||||
)
|
||||
# Changed code
|
||||
SELECT NEW.id_role, 'code', OLD.code, NEW.code, NEW.id_change_set
|
||||
WHERE NOT OLD.code <=> NEW.code
|
||||
UNION
|
||||
# Changed name
|
||||
SELECT NEW.id_role, 'name', OLD.name, NEW.name, NEW.id_change_set
|
||||
WHERE NOT OLD.name <=> NEW.name
|
||||
UNION
|
||||
# Changed active
|
||||
SELECT NEW.id_role, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set
|
||||
WHERE NOT (OLD.active <=> NEW.active)
|
||||
;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
INSERT INTO Shop_Role (
|
||||
display_order,
|
||||
code,
|
||||
name
|
||||
)
|
||||
VALUES
|
||||
(1, 'DIRECTOR', 'Director'),
|
||||
(2, 'USER', 'User')
|
||||
;
|
||||
|
||||
SELECT * FROM Shop_Role;
|
||||
SELECT * FROM Shop_Role_Audit;
|
||||
|
||||
|
||||
|
||||
# Role Permission link
|
||||
CREATE TABLE Shop_Role_Permission_Link (
|
||||
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_role INT,
|
||||
CONSTRAINT FK_Shop_Role_Permission_Link_id_role
|
||||
FOREIGN KEY (id_role)
|
||||
REFERENCES Shop_Role(id_role)
|
||||
ON UPDATE RESTRICT,
|
||||
id_permission INT,
|
||||
CONSTRAINT FK_Shop_Role_Permission_Link_id_permission
|
||||
FOREIGN KEY (id_permission)
|
||||
REFERENCES Shop_Permission(id_permission)
|
||||
ON UPDATE RESTRICT,
|
||||
id_access_level INT,
|
||||
CONSTRAINT FK_Shop_Role_Permission_Link_id_access_level
|
||||
FOREIGN KEY (id_access_level)
|
||||
REFERENCES Shop_Access_Level(id_access_level)
|
||||
ON UPDATE RESTRICT,
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
created_on DATETIME,
|
||||
created_by VARCHAR(100),
|
||||
id_change_set INT,
|
||||
CONSTRAINT FK_Shop_Role_Permission_Link_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_insert_Shop_Role_Permission_Link
|
||||
BEFORE INSERT ON Shop_Role_Permission_Link
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.created_on <=> NULL THEN
|
||||
SET NEW.created_on = NOW();
|
||||
END IF;
|
||||
IF NEW.created_by <=> NULL THEN
|
||||
SET NEW.created_by = CURRENT_USER();
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CREATE TABLE Shop_Role_Permission_Link_Audit (
|
||||
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_link INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Role_Permission_Link_Audit_id_link
|
||||
FOREIGN KEY (id_link)
|
||||
REFERENCES Shop_Role_Permission_Link(id_link)
|
||||
ON UPDATE RESTRICT,
|
||||
name_field VARCHAR(50),
|
||||
value_prev VARCHAR(500),
|
||||
value_new VARCHAR(500),
|
||||
id_change_set INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Role_Permission_Link_Audit_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
ON UPDATE RESTRICT
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_update_Shop_Role_Permission_Link
|
||||
BEFORE UPDATE ON Shop_Role_Permission_Link
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO Shop_Role_Permission_Link_Audit (
|
||||
id_link,
|
||||
name_field,
|
||||
value_prev,
|
||||
value_new,
|
||||
id_change_set
|
||||
)
|
||||
# Changed id_role
|
||||
SELECT NEW.id_link, 'id_role', CONVERT(OLD.id_role, CHAR), CONVERT(NEW.id_role, CHAR), NEW.id_change_set
|
||||
WHERE NOT OLD.id_role <=> NEW.id_role
|
||||
UNION
|
||||
# Changed id_permission
|
||||
SELECT NEW.id_link, 'id_permission', CONVERT(OLD.id_permission, CHAR), CONVERT(NEW.id_permission, CHAR), NEW.id_change_set
|
||||
WHERE NOT OLD.id_permission <=> NEW.id_permission
|
||||
UNION
|
||||
# Changed id_access_level
|
||||
SELECT NEW.id_link, 'id_access_level', CONVERT(OLD.id_access_level, CHAR), CONVERT(NEW.id_access_level, CHAR), NEW.id_change_set
|
||||
WHERE NOT OLD.id_access_level <=> NEW.id_access_level
|
||||
UNION
|
||||
# Changed active
|
||||
SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set
|
||||
WHERE NOT (OLD.active <=> NEW.active)
|
||||
;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
INSERT INTO Shop_Role_Permission_Link (
|
||||
id_role, id_permission, id_access_level
|
||||
)
|
||||
VALUES
|
||||
(1, 1, 3),
|
||||
(1, 2, 3),
|
||||
(1, 3, 3),
|
||||
(2, 1, 1),
|
||||
(2, 2, 1),
|
||||
(2, 3, 1)
|
||||
;
|
||||
|
||||
SELECT * FROM Shop_Role_Permission_Link;
|
||||
SELECT * FROM Shop_Role_Permission_Link_Audit;
|
||||
|
||||
|
||||
|
||||
# Users
|
||||
CREATE TABLE Shop_User (
|
||||
id_user INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
is_super_user BIT NOT NULL DEFAULT 0,
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
created_on DATETIME,
|
||||
created_by VARCHAR(100),
|
||||
id_change_set INT,
|
||||
CONSTRAINT FK_Shop_User_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_insert_Shop_User
|
||||
BEFORE INSERT ON Shop_User
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.created_on <=> NULL THEN
|
||||
SET NEW.created_on = NOW();
|
||||
END IF;
|
||||
IF NEW.created_by <=> NULL THEN
|
||||
SET NEW.created_by = CURRENT_USER();
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CREATE TABLE Shop_User_Audit (
|
||||
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_user INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_User_Audit_id_user
|
||||
FOREIGN KEY (id_user)
|
||||
REFERENCES Shop_User(id_user)
|
||||
ON UPDATE RESTRICT,
|
||||
name_field VARCHAR(50),
|
||||
value_prev VARCHAR(500),
|
||||
value_new VARCHAR(500),
|
||||
id_change_set INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_User_Audit_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
ON UPDATE RESTRICT
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_update_Shop_User
|
||||
BEFORE UPDATE ON Shop_User
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO Shop_User_Audit (
|
||||
id_user,
|
||||
name_field,
|
||||
value_prev,
|
||||
value_new,
|
||||
id_change_set
|
||||
)
|
||||
# Changed name
|
||||
SELECT NEW.id_user, 'name', OLD.name, NEW.name, NEW.id_change_set
|
||||
WHERE NOT (OLD.name <=> NEW.name)
|
||||
UNION
|
||||
# Changed is_super_user
|
||||
SELECT NEW.id_user, 'is_super_user', CONVERT(CONVERT(OLD.is_super_user, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_super_user, SIGNED), CHAR), NEW.id_change_set
|
||||
WHERE NOT (OLD.is_super_user <=> NEW.is_super_user)
|
||||
UNION
|
||||
# Changed active
|
||||
SELECT NEW.id_user, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set
|
||||
WHERE NOT (OLD.active <=> NEW.active)
|
||||
;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
INSERT INTO Shop_User (
|
||||
name,
|
||||
is_super_user
|
||||
)
|
||||
VALUES (
|
||||
'Teddy',
|
||||
1
|
||||
);
|
||||
|
||||
SELECT * FROM Shop_User;
|
||||
SELECT * FROM Shop_User_Audit;
|
||||
|
||||
|
||||
|
||||
# User Role link
|
||||
CREATE TABLE Shop_User_Role_Link (
|
||||
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_user INT,
|
||||
CONSTRAINT FK_Shop_User_Role_Link_id_user
|
||||
FOREIGN KEY (id_user)
|
||||
REFERENCES Shop_User(id_user)
|
||||
ON UPDATE RESTRICT,
|
||||
id_role INT,
|
||||
CONSTRAINT FK_Shop_User_Role_Link_id_role
|
||||
FOREIGN KEY (id_role)
|
||||
REFERENCES Shop_Role(id_role)
|
||||
ON UPDATE RESTRICT,
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
created_on DATETIME,
|
||||
created_by VARCHAR(100),
|
||||
id_change_set INT,
|
||||
CONSTRAINT FK_Shop_User_Role_Link_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_insert_Shop_User_Role_Link
|
||||
BEFORE INSERT ON Shop_User_Role_Link
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.created_on <=> NULL THEN
|
||||
SET NEW.created_on = NOW();
|
||||
END IF;
|
||||
IF NEW.created_by <=> NULL THEN
|
||||
SET NEW.created_by = CURRENT_USER();
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CREATE TABLE Shop_User_Role_Link_Audit (
|
||||
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_link INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_User_Role_Link_Audit_id_link
|
||||
FOREIGN KEY (id_link)
|
||||
REFERENCES Shop_User_Role_Link(id_link)
|
||||
ON UPDATE RESTRICT,
|
||||
name_field VARCHAR(50),
|
||||
value_prev VARCHAR(500),
|
||||
value_new VARCHAR(500),
|
||||
id_change_set INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_User_Role_Link_Audit_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
ON UPDATE RESTRICT
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_update_Shop_User_Role_Link
|
||||
BEFORE UPDATE ON Shop_User_Role_Link
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO Shop_User_Role_Link_Audit (
|
||||
id_link,
|
||||
name_field,
|
||||
value_prev,
|
||||
value_new,
|
||||
id_change_set
|
||||
)
|
||||
# Changed active
|
||||
SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set
|
||||
WHERE NOT (OLD.active <=> NEW.active)
|
||||
;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
INSERT INTO Shop_User_Role_Link (
|
||||
id_user, id_role
|
||||
)
|
||||
VALUES
|
||||
(1, 1)
|
||||
;
|
||||
|
||||
SELECT * FROM Shop_User_Role_Link;
|
||||
SELECT * FROM Shop_User_Role_Link_Audit;
|
||||
|
||||
|
||||
|
||||
# Addresses
|
||||
CREATE TABLE Shop_Address (
|
||||
id_address INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_user INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Address_id_user
|
||||
FOREIGN KEY (id_user)
|
||||
REFERENCES Shop_User(id_user)
|
||||
ON UPDATE RESTRICT,
|
||||
region VARCHAR(100) NOT NULL,
|
||||
name_full VARCHAR(255) NOT NULL,
|
||||
phone_number VARCHAR(20) NOT NULL,
|
||||
postcode VARCHAR(20) NOT NULL,
|
||||
address_line_1 VARCHAR(100) NOT NULL,
|
||||
address_line_2 VARCHAR(100) NOT NULL,
|
||||
city VARCHAR(50) NOT NULL,
|
||||
county VARCHAR(100) NOT NULL,
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
created_on DATETIME,
|
||||
created_by VARCHAR(100),
|
||||
id_change_set INT,
|
||||
CONSTRAINT FK_Shop_Address_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_insert_Shop_Address
|
||||
BEFORE INSERT ON Shop_Address
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.created_on <=> NULL THEN
|
||||
SET NEW.created_on = NOW();
|
||||
END IF;
|
||||
IF NEW.created_by <=> NULL THEN
|
||||
SET NEW.created_by = CURRENT_USER();
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CREATE TABLE Shop_Address_Audit (
|
||||
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_address INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Address_Audit_id_address
|
||||
FOREIGN KEY (id_address)
|
||||
REFERENCES Shop_Address(id_address)
|
||||
ON UPDATE RESTRICT,
|
||||
name_field VARCHAR(50),
|
||||
value_prev VARCHAR(500),
|
||||
value_new VARCHAR(500),
|
||||
id_change_set INT NOT NULL,
|
||||
CONSTRAINT FK_Shop_Address_Audit_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_User_Change_Set(id_change_set)
|
||||
ON UPDATE RESTRICT
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER before_update_Shop_Address
|
||||
BEFORE UPDATE ON Shop_Address
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO Shop_Address_Audit (
|
||||
id_address,
|
||||
name_field,
|
||||
value_prev,
|
||||
value_new,
|
||||
id_change_set
|
||||
)
|
||||
# Changed region
|
||||
SELECT NEW.id_address, 'region', OLD.region, NEW.region, NEW.id_change_set
|
||||
WHERE NOT OLD.region <=> NEW.region
|
||||
UNION
|
||||
# Changed name_full
|
||||
SELECT NEW.id_address, 'name_full', OLD.name_full, NEW.name_full, NEW.id_change_set
|
||||
WHERE NOT OLD.name_full <=> NEW.name_full
|
||||
UNION
|
||||
# Changed phone_number
|
||||
SELECT NEW.id_address, 'phone_number', OLD.phone_number, NEW.phone_number, NEW.id_change_set
|
||||
WHERE NOT OLD.phone_number <=> NEW.phone_number
|
||||
UNION
|
||||
# Changed postcode
|
||||
SELECT NEW.id_address, 'postcode', OLD.postcode, NEW.postcode, NEW.id_change_set
|
||||
WHERE NOT OLD.postcode <=> NEW.postcode
|
||||
UNION
|
||||
# Changed address_line_1
|
||||
SELECT NEW.id_address, 'address_line_1', OLD.address_line_1, NEW.address_line_1, NEW.id_change_set
|
||||
WHERE NOT OLD.address_line_1 <=> NEW.address_line_1
|
||||
UNION
|
||||
# Changed address_line_2
|
||||
SELECT NEW.id_address, 'address_line_2', OLD.address_line_2, NEW.address_line_2, NEW.id_change_set
|
||||
WHERE NOT OLD.address_line_2 <=> NEW.address_line_2
|
||||
UNION
|
||||
# Changed city
|
||||
SELECT NEW.id_address, 'city', OLD.city, NEW.city, NEW.id_change_set
|
||||
WHERE NOT OLD.city <=> NEW.city
|
||||
UNION
|
||||
# Changed county
|
||||
SELECT NEW.id_address, 'county', OLD.county, NEW.county, NEW.id_change_set
|
||||
WHERE NOT OLD.county <=> NEW.county
|
||||
UNION
|
||||
# Changed active
|
||||
SELECT NEW.id_address, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set
|
||||
WHERE NOT (OLD.active <=> NEW.active)
|
||||
;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
INSERT INTO Shop_Address (
|
||||
id_user, region, name_full, phone_number, postcode, address_line_1, address_line_2, city, county
|
||||
)
|
||||
SELECT U.id_user, 'United Kingdom', U.name, '07375 571430', 'NN6 6EB', 'The Laurels', 'Cold Ashby Road', 'Cold Ashby', 'Northamptonshire'
|
||||
FROM Shop_User U;
|
||||
|
||||
SELECT * FROM Shop_Address;
|
||||
SELECT * FROM Shop_Address_Audit;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user