Files
dog_training/static/MySQL/0000_combined.sql
2025-06-21 17:51:07 +01:00

5770 lines
154 KiB
SQL

CREATE DATABASE IF NOT EXISTS parts;
GRANT ALL PRIVILEGES ON parts.* TO 'teddy'@'%';
FLUSH PRIVILEGES;
USE parts;
-- Permanent Temp Tables
DROP TABLE IF EXISTS parts.tmp_DOG_Calc_User;
-- DROP TABLE IF EXISTS parts.tmp_core_Msg_Error;
DROP TABLE IF EXISTS parts.tmp_DOG_User;
DROP TABLE IF EXISTS parts.tmp_DOG_User_Role_Link;
-- Permanent Tables
DROP TABLE IF EXISTS parts.DOG_Dog_Drive_Link_Temp;
DROP TABLE IF EXISTS parts.DOG_Dog_Drive_Link_Audit;
DROP TABLE IF EXISTS parts.DOG_Dog_Drive_Link;
DROP TABLE IF EXISTS parts.DOG_Drive_Temp;
DROP TABLE IF EXISTS parts.DOG_Drive_Audit;
DROP TABLE IF EXISTS parts.DOG_Drive;
DROP TABLE IF EXISTS parts.DOG_Command_Button_Link_Temp;
DROP TABLE IF EXISTS parts.DOG_Command_Button_Link_Audit;
DROP TABLE IF EXISTS parts.DOG_Command_Button_Link;
DROP TABLE IF EXISTS parts.DOG_Button_Icon_Temp;
DROP TABLE IF EXISTS parts.DOG_Button_Icon_Audit;
DROP TABLE IF EXISTS parts.DOG_Button_Icon;
DROP TABLE IF EXISTS parts.DOG_Image_Temp;
DROP TABLE IF EXISTS parts.DOG_Image_Audit;
DROP TABLE IF EXISTS parts.DOG_Image;
DROP TABLE IF EXISTS parts.DOG_Button_Shape_Temp;
DROP TABLE IF EXISTS parts.DOG_Button_Shape_Audit;
DROP TABLE IF EXISTS parts.DOG_Button_Shape;
DROP TABLE IF EXISTS parts.DOG_Colour_Temp;
DROP TABLE IF EXISTS parts.DOG_Colour_Audit;
DROP TABLE IF EXISTS parts.DOG_Colour;
DROP TABLE IF EXISTS parts.DOG_Location_Link_Temp;
DROP TABLE IF EXISTS parts.DOG_Location_Link_Audit;
DROP TABLE IF EXISTS parts.DOG_Location_Link;
DROP TABLE IF EXISTS parts.DOG_Location_Temp;
DROP TABLE IF EXISTS parts.DOG_Location_Audit;
DROP TABLE IF EXISTS parts.DOG_Location;
DROP TABLE IF EXISTS parts.DOG_Personal_Best_Temp;
DROP TABLE IF EXISTS parts.DOG_Personal_Best_Audit;
DROP TABLE IF EXISTS parts.DOG_Personal_Best;
DROP TABLE IF EXISTS parts.DOG_Dog_Command_Link_Temp;
DROP TABLE IF EXISTS parts.DOG_Dog_Command_Link_Audit;
DROP TABLE IF EXISTS parts.DOG_Dog_Command_Link;
DROP TABLE IF EXISTS parts.DOG_Command_Temp;
DROP TABLE IF EXISTS parts.DOG_Command_Audit;
DROP TABLE IF EXISTS parts.DOG_Command;
DROP TABLE IF EXISTS parts.DOG_Command_Category_Temp;
DROP TABLE IF EXISTS parts.DOG_Command_Category_Audit;
DROP TABLE IF EXISTS parts.DOG_Command_Category;
DROP TABLE IF EXISTS parts.DOG_Obedience_Level_Temp;
DROP TABLE IF EXISTS parts.DOG_Obedience_Level_Audit;
DROP TABLE IF EXISTS parts.DOG_Obedience_Level;
DROP TABLE IF EXISTS parts.DOG_Understanding_Level_Temp;
DROP TABLE IF EXISTS parts.DOG_Understanding_Level_Audit;
DROP TABLE IF EXISTS parts.DOG_Understanding_Level;
DROP TABLE IF EXISTS parts.DOG_Competency_Level_Temp;
DROP TABLE IF EXISTS parts.DOG_Competency_Level_Audit;
DROP TABLE IF EXISTS parts.DOG_Competency_Level;
DROP TABLE IF EXISTS parts.DOG_Dog_Breed_Link_Temp;
DROP TABLE IF EXISTS parts.DOG_Dog_Breed_Link_Audit;
DROP TABLE IF EXISTS parts.DOG_Dog_Breed_Link;
DROP TABLE IF EXISTS parts.DOG_Breed_Temp;
DROP TABLE IF EXISTS parts.DOG_Breed_Audit;
DROP TABLE IF EXISTS parts.DOG_Breed;
DROP TABLE IF EXISTS parts.DOG_Dog_Temp;
DROP TABLE IF EXISTS parts.DOG_Dog_Audit;
DROP TABLE IF EXISTS parts.DOG_Dog;
DROP TABLE IF EXISTS parts.DOG_Dog_Change_Set;
DROP TABLE IF EXISTS parts.DOG_Calc_User_Temp;
DROP TABLE IF EXISTS parts.DOG_User_Role_Link_Audit;
DROP TABLE IF EXISTS parts.DOG_User_Role_Link;
DROP TABLE IF EXISTS parts.DOG_Role_Permission_Link_Audit;
DROP TABLE IF EXISTS parts.DOG_Role_Permission_Link;
DROP TABLE IF EXISTS parts.DOG_Role_Audit;
DROP TABLE IF EXISTS parts.DOG_Role;
DROP TABLE IF EXISTS parts.DOG_User_Temp;
DROP TABLE IF EXISTS parts.DOG_User_Audit;
DROP TABLE IF EXISTS parts.DOG_User;
DROP TABLE IF EXISTS parts.DOG_Permission_Audit;
DROP TABLE IF EXISTS parts.DOG_Permission;
DROP TABLE IF EXISTS parts.DOG_Permission_Group_Audit;
DROP TABLE IF EXISTS parts.DOG_Permission_Group;
DROP TABLE IF EXISTS parts.DOG_Access_Level_Audit;
DROP TABLE IF EXISTS parts.DOG_Access_Level;
DROP TABLE IF EXISTS parts.DOG_User_Change_Set;
/*
DROP TABLE IF EXISTS parts.CORE_Split_Key_Value_Pair_Csv_Temp;
DROP TABLE IF EXISTS parts.CORE_Split_Temp;
*/
DROP TABLE IF EXISTS parts.CORE_File_Type;
DROP TABLE IF EXISTS parts.CORE_Msg_Error_Type;
-- Stored Procedures
DROP PROCEDURE IF EXISTS parts.p_DOG_test_get_many_dog_command;
DROP PROCEDURE IF EXISTS parts.p_DOG_test_get_many_command;
DROP PROCEDURE IF EXISTS parts.p_DOG_get_many_command;
DROP PROCEDURE IF EXISTS parts.p_DOG_test_save_command;
DROP PROCEDURE IF EXISTS parts.p_DOG_save_command;
DROP PROCEDURE IF EXISTS parts.p_DOG_clear_calc_user;
DROP PROCEDURE IF EXISTS parts.p_DOG_calc_user;
/*
DROP PROCEDURE IF EXISTS parts.p_core_clear_split_key_value_pair_csv;
DROP PROCEDURE IF EXISTS parts.p_core_split_key_value_pair_csv;
DROP PROCEDURE IF EXISTS parts.p_core_clear_split;
DROP PROCEDURE IF EXISTS parts.p_core_split;
DROP PROCEDURE IF EXISTS parts.p_clear_split_key_value_pair_csv;
DROP PROCEDURE IF EXISTS parts.p_split_key_value_pair_csv;
DROP PROCEDURE IF EXISTS parts.p_clear_split;
DROP PROCEDURE IF EXISTS parts.p_split;
DROP PROCEDURE IF EXISTS parts.p_core_debug_timing_reporting;
DROP PROCEDURE IF EXISTS parts.p_debug_timing_reporting;
DROP PROCEDURE IF EXISTS parts.p_core_validate_guid;
DROP PROCEDURE IF EXISTS parts.p_core_validate_guid_test;
*/
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'CORE_Msg_Error_Type'
;
CREATE TABLE IF NOT EXISTS parts.CORE_Msg_Error_Type (
id_type INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100) NOT NULL
, name VARCHAR(500) NOT NULL
, description VARCHAR(1000)
, is_breaking_error BIT NOT NULL
, background_colour VARCHAR(32) NOT NULL DEFAULT '#111111'
, text_colour VARCHAR(32) NOT NULL DEFAULT '#110000'
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'CORE_File_Type'
;
CREATE TABLE IF NOT EXISTS parts.CORE_File_Type (
id_file_type INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100) NOT NULL
, name VARCHAR(250) NOT NULL
, is_image BIT NOT NULL DEFAULT 0
, active BIT NOT NULL DEFAULT 1
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'CORE_Split_Temp'
;
CREATE TABLE IF NOT EXISTS parts.CORE_Split_Temp (
guid BINARY(36) NOT NULL
, display_order INT NOT NULL
, substring VARCHAR(4000) NOT NULL
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'CORE_Split_Key_Value_Pair_Csv_Temp'
;
CREATE TABLE IF NOT EXISTS parts.CORE_Split_Key_Value_Pair_Csv_Temp (
guid BINARY(36) NOT NULL
, id INT NOT NULL
, key_column VARCHAR(4000) NULL
, value_column VARCHAR(4000) NULL
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_User_Change_Set'
;
CREATE TABLE IF NOT EXISTS parts.DOG_User_Change_Set (
id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, comment VARCHAR(500)
, updated_last_on DATETIME
, id_user_updated_last_by INT
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Access_Level'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Access_Level (
id_access_level INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100)
, name VARCHAR(250)
, priority INT NOT NULL
, display_order INT NOT NULL
, active BIT NOT NULL DEFAULT 1
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Permission_Group'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Permission_Group (
id_group INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100)
, name VARCHAR(250)
, display_order INT NOT NULL
, active BIT NOT NULL DEFAULT 1
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Permission'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Permission (
id_permission INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100)
, name VARCHAR(250)
, id_permission_group INT NOT NULL
, CONSTRAINT FK_DOG_Permission_id_permission_group
FOREIGN KEY (id_permission_group)
REFERENCES parts.DOG_Permission_Group(id_group)
, id_access_level_required INT NOT NULL
, CONSTRAINT FK_DOG_Permission_id_access_level_required
FOREIGN KEY (id_access_level_required)
REFERENCES parts.DOG_Access_Level(id_access_level)
, display_order INT NOT NULL
, active BIT NOT NULL DEFAULT 1
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_User'
;
CREATE TABLE IF NOT EXISTS parts.DOG_User (
id_user INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_user_auth0 VARCHAR(200)
, firstname VARCHAR(250)
, surname VARCHAR(250)
, email VARCHAR(254)
, is_email_verified BIT NOT NULL DEFAULT 0
, is_super_user BIT NOT NULL DEFAULT 0
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_User_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_User_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_User_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_User_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_User_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_user INT NOT NULL
, CONSTRAINT FK_DOG_User_Audit_id_user
FOREIGN KEY (id_user)
REFERENCES parts.DOG_User(id_user)
, name_field VARCHAR(100) NOT NULL
, value_prev VARCHAR(500)
, value_new VARCHAR(500)
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_User_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_User_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_User_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_User_Temp (
id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_user INT NOT NULL
, id_user_auth0 VARCHAR(200)
, firstname VARCHAR(250)
, surname VARCHAR(250)
, email VARCHAR(254)
, is_email_verified BIT
, is_super_user BIT
, active BIT
, guid BINARY(36) NOT NULL
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Role'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Role (
id_role INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100)
, name VARCHAR(250)
, display_order INT NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Role_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Role_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_User_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Role_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Role_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_role INT NOT NULL
, CONSTRAINT FK_DOG_Role_Audit_id_role
FOREIGN KEY (id_role)
REFERENCES parts.DOG_Role(id_role)
, name_field VARCHAR(100) NOT NULL
, value_prev VARCHAR(500)
, value_new VARCHAR(500)
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Role_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_User_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Role_Permission_Link'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Role_Permission_Link (
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_role INT NOT NULL
, CONSTRAINT FK_DOG_Role_Permission_Link_id_role
FOREIGN KEY (id_role)
REFERENCES parts.DOG_Role(id_role)
, id_permission INT NOT NULL
, CONSTRAINT FK_DOG_Role_Permission_Link_id_permission
FOREIGN KEY (id_permission)
REFERENCES parts.DOG_Permission(id_permission)
, id_access_level INT NOT NULL
, CONSTRAINT FK_DOG_Role_Permission_Link_id_access_level
FOREIGN KEY (id_access_level)
REFERENCES parts.DOG_Access_Level(id_access_level)
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Role_Permission_Link_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Role_Permission_Link_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_User_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Role_Permission_Link_Audit';
CREATE TABLE IF NOT EXISTS parts.DOG_Role_Permission_Link_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_link INT NOT NULL
, CONSTRAINT FK_DOG_Role_Permission_Link_Audit_id_link
FOREIGN KEY (id_link)
REFERENCES parts.DOG_Role_Permission_Link(id_link)
, name_field VARCHAR(100) NOT NULL
, value_prev VARCHAR(500)
, value_new VARCHAR(500)
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Role_Permission_Link_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_User_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_User_Role_Link'
;
CREATE TABLE IF NOT EXISTS parts.DOG_User_Role_Link (
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_user INT NOT NULL
, CONSTRAINT FK_DOG_User_Role_Link_id_user
FOREIGN KEY (id_user)
REFERENCES parts.DOG_User(id_user)
, id_role INT NOT NULL
, CONSTRAINT FK_DOG_User_Role_Link_id_role
FOREIGN KEY (id_role)
REFERENCES parts.DOG_Role(id_role)
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_User_Role_Link_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_User_Role_Link_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_User_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_User_Role_Link_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_User_Role_Link_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_link INT NOT NULL
, CONSTRAINT FK_DOG_User_Role_Link_Audit_id_link
FOREIGN KEY (id_link)
REFERENCES parts.DOG_User_Role_Link(id_link)
, name_field VARCHAR(100) NOT NULL
, value_prev VARCHAR(500)
, value_new VARCHAR(500)
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_User_Role_Link_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_User_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Calc_User_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Calc_User_Temp (
guid BINARY(36) NOT NULL
, id_user INT
, id_permission_required INT NOT NULL
, CONSTRAINT FK_DOG_Calc_User_Temp_id_permission_required
FOREIGN KEY (id_permission_required)
REFERENCES parts.DOG_Permission (id_permission)
, priority_access_level_required INT NOT NULL
, is_super_user BIT
, priority_access_level_user INT
, has_access BIT
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Change_Set'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Change_Set (
id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, comment VARCHAR(500)
, updated_last_on DATETIME
, id_user_updated_last_by INT
, CONSTRAINT FK_DOG_Role_id_user_updated_last_by
FOREIGN KEY (id_user_updated_last_by)
REFERENCES parts.DOG_User(id_user)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog (
id_dog INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, name VARCHAR(250) NOT NULL
, appearance VARCHAR(1000)
, mass_kg DECIMAL(7, 3)
, notes TEXT
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Dog_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Dog_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_dog INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Audit_id_dog
FOREIGN KEY (id_dog)
REFERENCES parts.DOG_Dog(id_dog)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_dog INT
, name VARCHAR(250)
, appearance VARCHAR(1000)
, mass_kg DECIMAL(7, 3)
, notes TEXT
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Breed'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Breed (
id_breed INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100) NOT NULL
, name VARCHAR(250) NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Breed_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Breed_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Breed_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Breed_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_breed INT NOT NULL
, CONSTRAINT FK_DOG_Breed_Audit_id_breed
FOREIGN KEY (id_breed)
REFERENCES parts.DOG_Breed(id_breed)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Breed_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Breed_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Breed_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_breed INT
, code VARCHAR(100)
, name VARCHAR(250)
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Breed_Link'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Breed_Link (
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_dog INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Breed_Link_id_dog
FOREIGN KEY (id_dog)
REFERENCES parts.DOG_Dog(id_dog)
, id_breed INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Breed_Link_id_breed
FOREIGN KEY (id_breed)
REFERENCES parts.DOG_Breed(id_breed)
, lineage_ratio DECIMAL(5, 4) NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Dog_Breed_Link_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Dog_Breed_Link_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Breed_Link_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Breed_Link_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_link INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Breed_Link_Audit_id_link
FOREIGN KEY (id_link)
REFERENCES parts.DOG_Dog_Breed_Link(id_link)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Breed_Link_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Breed_Link_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Breed_Link_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_link INT
, id_dog INT
, id_breed INT
, lineage_ratio DECIMAL(5, 4)
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Understanding_Level'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Understanding_Level (
id_understanding_level INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100) NOT NULL
, name VARCHAR(250) NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Understanding_Level_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Understanding_Level_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Understanding_Level_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Understanding_Level_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_understanding_level INT NOT NULL
, CONSTRAINT FK_DOG_Understanding_Level_Audit_id_understanding_level
FOREIGN KEY (id_understanding_level)
REFERENCES parts.DOG_Understanding_Level(id_understanding_level)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Understanding_Level_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Understanding_Level_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Understanding_Level_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_understanding_level INT
, code VARCHAR(100)
, name VARCHAR(250)
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Obedience_Level'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Obedience_Level (
id_obedience_level INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100) NOT NULL
, name VARCHAR(250) NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Obedience_Level_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Obedience_Level_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Obedience_Level_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Obedience_Level_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_obedience_level INT NOT NULL
, CONSTRAINT FK_DOG_Obedience_Level_Audit_id_obedience_level
FOREIGN KEY (id_obedience_level)
REFERENCES parts.DOG_Obedience_Level(id_obedience_level)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Obedience_Level_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Obedience_Level_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Obedience_Level_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_obedience_level INT
, code VARCHAR(100)
, name VARCHAR(250)
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Command_Category'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Command_Category (
id_command_category INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100) NOT NULL
, name VARCHAR(250) NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Command_Category_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Command_Category_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Command_Category_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Command_Category_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_command_category INT NOT NULL
, CONSTRAINT FK_DOG_Command_Category_Audit_id_command_category
FOREIGN KEY (id_command_category)
REFERENCES parts.DOG_Command_Category(id_command_category)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Command_Category_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Command_Category_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Command_Category_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_command_category INT
, code VARCHAR(100)
, name VARCHAR(250)
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Command'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Command (
id_command INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_command_category INT NOT NULL
, CONSTRAINT FK_DOG_Command_id_command_category
FOREIGN KEY (id_command_category)
REFERENCES parts.DOG_Command_Category(id_command_category)
, name VARCHAR(250) NOT NULL
, hand_signal_default_description TEXT
, can_have_button BIT NOT NULL DEFAULT 0
, notes TEXT
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Command_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Command_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Command_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Command_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_command INT NOT NULL
, CONSTRAINT FK_DOG_Command_Audit_id_command
FOREIGN KEY (id_command)
REFERENCES parts.DOG_Command(id_command)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Command_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Command_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Command_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_command INT
, id_command_category INT
, name VARCHAR(250)
, hand_signal_default_description TEXT
, can_have_button BIT
, notes TEXT
, active BIT
, guid BINARY(36)
, name_command_category VARCHAR(250)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Command_Link'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Command_Link (
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_dog INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Command_Link_id_dog
FOREIGN KEY (id_dog)
REFERENCES parts.DOG_Dog(id_dog)
, id_command INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Command_Link_id_command
FOREIGN KEY (id_command)
REFERENCES parts.DOG_Command(id_command)
, id_understanding_level INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Command_Link_id_understanding_level
FOREIGN KEY (id_understanding_level)
REFERENCES parts.DOG_Understanding_Level(id_understanding_level)
, id_obedience_level INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Command_Link_id_obedience_level
FOREIGN KEY (id_obedience_level)
REFERENCES parts.DOG_Obedience_Level(id_obedience_level)
, hand_signal_description TEXT
, notes TEXT
-- , has_button BIT NOT NULL DEFAULT 0
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Dog_Command_Link_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Dog_Command_Link_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Command_Link_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Command_Link_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_link INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Command_Link_Audit_id_link
FOREIGN KEY (id_link)
REFERENCES parts.DOG_Dog_Command_Link(id_link)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Command_Link_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Command_Link_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Command_Link_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_link INT
, id_dog INT
, id_command INT
, id_understanding_level INT
, id_obedience_level INT
, hand_signal_description TEXT
, notes TEXT
-- , has_button BIT
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Personal_Best'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Personal_Best (
id_personal_best INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_dog_command_link INT NOT NULL
, CONSTRAINT FK_DOG_Personal_Best_id_dog_command_link
FOREIGN KEY (id_dog_command_link)
REFERENCES parts.DOG_Dog_Command_Link(id_link)
, is_achieved_using_button BIT NOT NULL DEFAULT 0
, situation TEXT NOT NULL
, duration_seconds INT
, quantity INT
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Personal_Best_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Personal_Best_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Personal_Best_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Personal_Best_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_personal_best INT NOT NULL
, CONSTRAINT FK_DOG_Personal_Best_Audit_id_personal_best
FOREIGN KEY (id_personal_best)
REFERENCES parts.DOG_Personal_Best(id_personal_best)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Personal_Best_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Personal_Best_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Personal_Best_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_personal_best INT
, id_dog_command_link INT
, is_achieved_using_button BIT
, situation TEXT
, duration_seconds INT
, quantity INT
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Location'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Location (
id_location INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100) NOT NULL
, name VARCHAR(250) NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Location_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Location_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Location_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Location_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_location INT NOT NULL
, CONSTRAINT FK_DOG_Location_Audit_id_location
FOREIGN KEY (id_location)
REFERENCES parts.DOG_Location(id_location)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Location_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Location_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Location_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_location INT
, code VARCHAR(100)
, name VARCHAR(250)
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Location_Link'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Location_Link (
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_location_parent INT
, CONSTRAINT FK_DOG_Location_Link_id_location_parent
FOREIGN KEY (id_location_parent)
REFERENCES parts.DOG_Location(id_location)
, id_location_child INT
, CONSTRAINT FK_DOG_Location_Link_id_location_child
FOREIGN KEY (id_location_child)
REFERENCES parts.DOG_Location(id_location)
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Location_Link_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Location_Link_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Location_Link_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Location_Link_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_link INT NOT NULL
, CONSTRAINT FK_DOG_Location_Link_Audit_id_link
FOREIGN KEY (id_link)
REFERENCES parts.DOG_Location_Link(id_link)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Location_Link_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Location_Link_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Location_Link_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_link INT
, id_location_parent INT
, id_location_child INT
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Colour'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Colour (
id_colour INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100) NOT NULL
, name VARCHAR(250) NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Colour_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Colour_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Colour_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Colour_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_colour INT NOT NULL
, CONSTRAINT FK_DOG_Colour_Audit_id_colour
FOREIGN KEY (id_colour)
REFERENCES parts.DOG_Colour(id_colour)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Colour_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Colour_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Colour_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_colour INT
, code VARCHAR(100)
, name VARCHAR(250)
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Button_Shape'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Button_Shape (
id_button_shape INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100) NOT NULL
, name VARCHAR(250) NOT NULL
, description TEXT
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Button_Shape_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Button_Shape_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Button_Shape_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Button_Shape_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_button_shape INT NOT NULL
, CONSTRAINT FK_DOG_Button_Shape_Audit_id_button_shape
FOREIGN KEY (id_button_shape)
REFERENCES parts.DOG_Button_Shape(id_button_shape)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Button_Shape_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Button_Shape_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Button_Shape_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_button_shape INT
, code VARCHAR(100)
, name VARCHAR(250)
, description TEXT
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Image'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Image (
id_image INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_file_type INT NOT NULL
, CONSTRAINT FK_DOG_Image_id_file_type
FOREIGN KEY (id_file_type)
REFERENCES parts.CORE_File_Type(id_file_type)
, id_dog INT
, CONSTRAINT FK_DOG_Image_id_dog
FOREIGN KEY (id_dog)
REFERENCES parts.DOG_Dog(id_dog)
, path VARCHAR(1024) NOT NULL
, display_order INT
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Image_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Image_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Image_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Image_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_image INT NOT NULL
, CONSTRAINT FK_DOG_Image_Audit_id_image
FOREIGN KEY (id_image)
REFERENCES parts.DOG_Image(id_image)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Image_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Image_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Image_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_image INT
, id_file_type INT NOT NULL
, id_dog INT
, path VARCHAR(1024) NOT NULL
, display_order INT
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Button_Icon'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Button_Icon (
id_button_icon INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_image INT
, CONSTRAINT FK_DOG_Button_Icon_id_image
FOREIGN KEY (id_image)
REFERENCES parts.DOG_Image(id_image)
, code VARCHAR(100) NOT NULL
, name VARCHAR(250) NOT NULL
, description TEXT
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Button_Icon_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Button_Icon_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Button_Icon_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Button_Icon_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_button_icon INT NOT NULL
, CONSTRAINT FK_DOG_Button_Icon_Audit_id_button_icon
FOREIGN KEY (id_button_icon)
REFERENCES parts.DOG_Button_Icon(id_button_icon)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Button_Icon_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Button_Icon_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Button_Icon_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_button_icon INT
, id_image INT
, code VARCHAR(100)
, name VARCHAR(250)
, description TEXT
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Command_Button_Link'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Command_Button_Link (
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_command INT NOT NULL
, CONSTRAINT FK_DOG_Command_Button_Link_id_command
FOREIGN KEY (id_command)
REFERENCES parts.DOG_Command(id_command)
, id_button_shape INT NOT NULL
, CONSTRAINT FK_DOG_Command_Button_Link_id_button_shape
FOREIGN KEY (id_button_shape)
REFERENCES parts.DOG_Button_Shape(id_button_shape)
, id_button_colour INT NOT NULL
, CONSTRAINT FK_DOG_Command_Button_Link_id_button_colour
FOREIGN KEY (id_button_colour)
REFERENCES parts.DOG_Colour(id_colour)
, id_button_icon INT
, CONSTRAINT FK_DOG_Command_Button_Link_id_button_icon
FOREIGN KEY (id_button_icon)
REFERENCES parts.DOG_Button_Icon(id_button_icon)
, id_location INT NOT NULL
, CONSTRAINT FK_DOG_Command_Button_Link_id_location
FOREIGN KEY (id_location)
REFERENCES parts.DOG_Location(id_location)
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Command_Button_Link_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Command_Button_Link_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Command_Button_Link_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Command_Button_Link_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_link INT NOT NULL
, CONSTRAINT FK_DOG_Command_Button_Link_Audit_id_link
FOREIGN KEY (id_link)
REFERENCES parts.DOG_Command_Button_Link(id_link)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Command_Button_Link_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Command_Button_Link_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Command_Button_Link_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_link INT
, id_command INT
, id_button_shape INT
, id_button_colour INT
, id_button_icon INT
, id_location INT
, has_button BIT
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Drive'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Drive (
id_drive INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, code VARCHAR(100) NOT NULL
, name VARCHAR(250) NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Drive_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Drive_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Drive_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Drive_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_drive INT NOT NULL
, CONSTRAINT FK_DOG_Drive_Audit_id_drive
FOREIGN KEY (id_drive)
REFERENCES parts.DOG_Drive(id_drive)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Drive_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Drive_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Drive_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_drive INT
, code VARCHAR(100)
, name VARCHAR(250)
, active BIT
, guid BINARY(36)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Drive_Link'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Drive_Link (
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_dog INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Drive_Link_id_dog
FOREIGN KEY (id_dog)
REFERENCES parts.DOG_Dog(id_dog)
, id_drive INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Drive_Link_id_drive
FOREIGN KEY (id_drive)
REFERENCES parts.DOG_Drive(id_drive)
, dominance_ratio DECIMAL(5, 4)
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Dog_Drive_Link_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES parts.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Dog_Drive_Link_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Drive_Link_Audit'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Drive_Link_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_link INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Drive_Link_Audit_id_link
FOREIGN KEY (id_link)
REFERENCES parts.DOG_Dog_Drive_Link(id_link)
, name_field VARCHAR(100) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Dog_Drive_Link_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES parts.DOG_Dog_Change_Set(id_change_set)
);
USE parts;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'parts'
AND TABLE_NAME = 'DOG_Dog_Drive_Link_Temp'
;
CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Drive_Link_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_link INT
, id_dog INT
, id_drive INT
, dominance_ratio DECIMAL(5, 4)
, active BIT
, guid BINARY(36)
);
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_User_Change_Set;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_User_Change_Set
BEFORE INSERT ON parts.DOG_User_Change_Set
FOR EACH ROW
BEGIN
IF NEW.updated_last_on <=> NULL THEN
SET NEW.updated_last_on = NOW();
END IF;
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_User_Change_Set
BEFORE UPDATE ON parts.DOG_User_Change_Set
FOR EACH ROW
BEGIN
IF NOT EXISTS(SELECT * FROM parts.DOG_User WHERE id_user = NEW.id_user_updated_last_by) THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New Updated-Last-By User ID must be provided.';
END IF;
END //
DELIMITER ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_User;
DROP TRIGGER IF EXISTS parts.before_update_DOG_User;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_User
BEFORE INSERT ON parts.DOG_User
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_User
BEFORE UPDATE ON parts.DOG_User
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_User_Audit (
id_user,
name_field,
value_prev,
value_new,
id_change_set
)
-- Changed id_user_auth0
SELECT NEW.id_user, 'id_user_auth0', OLD.id_user_auth0, NEW.id_user_auth0, NEW.id_change_set
WHERE NOT (OLD.id_user_auth0 <=> NEW.id_user_auth0)
UNION
-- Changed firstname
SELECT NEW.id_user, 'firstname', OLD.firstname, NEW.firstname, NEW.id_change_set
WHERE NOT (OLD.firstname <=> NEW.firstname)
UNION
-- Changed surname
SELECT NEW.id_user, 'surname', OLD.surname, NEW.surname, NEW.id_change_set
WHERE NOT (OLD.surname <=> NEW.surname)
UNION
-- Changed email
SELECT NEW.id_user, 'email', OLD.email, NEW.email, NEW.id_change_set
WHERE NOT (OLD.email <=> NEW.email)
UNION
-- Changed is_email_verified
SELECT NEW.id_user, 'is_email_verified', CONVERT(CONVERT(OLD.is_email_verified, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_email_verified, SIGNED), CHAR), NEW.id_change_set
WHERE NOT (OLD.is_email_verified <=> NEW.is_email_verified)
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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Role;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Role;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Role
BEFORE INSERT ON parts.DOG_Role
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Role
BEFORE UPDATE ON parts.DOG_Role
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_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)
UNION
-- Changed display_order
SELECT NEW.id_role, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set
WHERE NOT OLD.display_order <=> NEW.display_order
;
END //
DELIMITER ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Role_Permission_Link;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Role_Permission_Link;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Role_Permission_Link
BEFORE INSERT ON parts.DOG_Role_Permission_Link
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Role_Permission_Link
BEFORE UPDATE ON parts.DOG_Role_Permission_Link
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_User_Role_Link;
DROP TRIGGER IF EXISTS parts.before_update_DOG_User_Role_Link;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_User_Role_Link
BEFORE INSERT ON parts.DOG_User_Role_Link
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_User_Role_Link
BEFORE UPDATE ON parts.DOG_User_Role_Link
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_User_Role_Link_Audit (
id_link,
name_field,
value_prev,
value_new,
id_change_set
)
-- Changed id_user
SELECT NEW.id_link, 'id_user', CONVERT(OLD.id_user, CHAR), CONVERT(NEW.id_user, CHAR), NEW.id_change_set
WHERE NOT OLD.id_user <=> NEW.id_user
UNION
-- 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 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 ;USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Dog_Change_Set;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Dog_Change_Set
BEFORE INSERT ON parts.DOG_Dog_Change_Set
FOR EACH ROW
BEGIN
IF NEW.updated_last_on <=> NULL THEN
SET NEW.updated_last_on = NOW();
END IF;
END //
DELIMITER ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Dog;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Dog;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Dog
BEFORE INSERT ON parts.DOG_Dog
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Dog
BEFORE UPDATE ON parts.DOG_Dog
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Dog_Audit (
id_dog
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed name
SELECT NEW.id_dog, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT OLD.name <=> NEW.name
UNION
-- Changed appearance
SELECT NEW.id_dog, 'appearance', OLD.appearance, NEW.appearance, NEW.id_change_set
WHERE NOT OLD.appearance <=> NEW.appearance
UNION
-- Changed mass_kg
SELECT NEW.id_dog, 'mass_kg', CONVERT(OLD.mass_kg, CHAR), CONVERT(NEW.mass_kg, CHAR), NEW.id_change_set
WHERE NOT (OLD.mass_kg <=> NEW.mass_kg)
UNION
-- Changed active
SELECT NEW.id_dog, '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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Breed;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Breed;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Breed
BEFORE INSERT ON parts.DOG_Breed
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Breed
BEFORE UPDATE ON parts.DOG_Breed
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Breed_Audit (
id_breed
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed code
SELECT NEW.id_breed, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT OLD.code <=> NEW.code
UNION
-- Changed name
SELECT NEW.id_breed, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT OLD.name <=> NEW.name
UNION
-- Changed active
SELECT NEW.id_breed, '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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Dog_Breed_Link;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Dog_Breed_Link;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Dog_Breed_Link
BEFORE INSERT ON parts.DOG_Dog_Breed_Link
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Dog_Breed_Link
BEFORE UPDATE ON parts.DOG_Dog_Breed_Link
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Dog_Breed_Link_Audit (
id_link
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed id_dog
SELECT NEW.id_link, 'id_dog', CONVERT(OLD.id_dog, CHAR), CONVERT(NEW.id_dog, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_dog <=> NEW.id_dog)
UNION
-- Changed id_breed
SELECT NEW.id_link, 'id_breed', CONVERT(OLD.id_breed, CHAR), CONVERT(NEW.id_breed, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_breed <=> NEW.id_breed)
UNION
-- Changed lineage_ratio
SELECT NEW.id_link, 'lineage_ratio', CONVERT(OLD.lineage_ratio, CHAR), CONVERT(NEW.lineage_ratio, CHAR), NEW.id_change_set
WHERE NOT (OLD.lineage_ratio <=> NEW.lineage_ratio)
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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Understanding_Level;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Understanding_Level;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Understanding_Level
BEFORE INSERT ON parts.DOG_Understanding_Level
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Understanding_Level
BEFORE UPDATE ON parts.DOG_Understanding_Level
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Understanding_Level_Audit (
id_understanding_level
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed code
SELECT NEW.id_understanding_level, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT OLD.code <=> NEW.code
UNION
-- Changed name
SELECT NEW.id_understanding_level, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT OLD.name <=> NEW.name
UNION
-- Changed active
SELECT NEW.id_understanding_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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Obedience_Level;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Obedience_Level;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Obedience_Level
BEFORE INSERT ON parts.DOG_Obedience_Level
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Obedience_Level
BEFORE UPDATE ON parts.DOG_Obedience_Level
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Obedience_Level_Audit (
id_obedience_level
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed code
SELECT NEW.id_obedience_level, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT OLD.code <=> NEW.code
UNION
-- Changed name
SELECT NEW.id_obedience_level, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT OLD.name <=> NEW.name
UNION
-- Changed active
SELECT NEW.id_obedience_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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Command_Category;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Command_Category;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Command_Category
BEFORE INSERT ON parts.DOG_Command_Category
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Command_Category
BEFORE UPDATE ON parts.DOG_Command_Category
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Command_Category_Audit (
id_command_category
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed code
SELECT NEW.id_command_category, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT OLD.code <=> NEW.code
UNION
-- Changed name
SELECT NEW.id_command_category, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT OLD.name <=> NEW.name
UNION
-- Changed active
SELECT NEW.id_command_category, '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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Command;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Command;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Command
BEFORE INSERT ON parts.DOG_Command
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Command
BEFORE UPDATE ON parts.DOG_Command
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Command_Audit (
id_command
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed id_command_category
SELECT NEW.id_command, 'id_command_category', CONVERT(OLD.id_command_category, CHAR), CONVERT(NEW.id_command_category, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_command_category <=> NEW.id_command_category)
UNION
-- Changed name
SELECT NEW.id_command, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT OLD.name <=> NEW.name
UNION
-- Changed hand_signal_default_description
SELECT NEW.id_command, 'hand_signal_default_description', OLD.hand_signal_default_description, NEW.hand_signal_default_description, NEW.id_change_set
WHERE NOT OLD.hand_signal_default_description <=> NEW.hand_signal_default_description
UNION
-- Changed can_have_button
SELECT NEW.id_command, 'can_have_button', CONVERT(CONVERT(OLD.can_have_button, SIGNED), CHAR), CONVERT(CONVERT(NEW.can_have_button, SIGNED), CHAR), NEW.id_change_set
WHERE NOT (OLD.can_have_button <=> NEW.can_have_button)
UNION
-- Changed notes
SELECT NEW.id_command, 'notes', OLD.notes, NEW.notes, NEW.id_change_set
WHERE NOT OLD.notes <=> NEW.notes
UNION
-- Changed active
SELECT NEW.id_command, '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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Dog_Command_Link;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Dog_Command_Link;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Dog_Command_Link
BEFORE INSERT ON parts.DOG_Dog_Command_Link
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Dog_Command_Link
BEFORE UPDATE ON parts.DOG_Dog_Command_Link
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Dog_Command_Link_Audit (
id_link
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed id_dog
SELECT NEW.id_link, 'id_dog', CONVERT(OLD.id_dog, CHAR), CONVERT(NEW.id_dog, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_dog <=> NEW.id_dog)
UNION
-- Changed id_command
SELECT NEW.id_link, 'id_command', CONVERT(OLD.id_command, CHAR), CONVERT(NEW.id_command, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_command <=> NEW.id_command)
UNION
-- Changed id_understanding_level
SELECT NEW.id_link, 'id_understanding_level', CONVERT(OLD.id_understanding_level, CHAR), CONVERT(NEW.id_understanding_level, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_understanding_level <=> NEW.id_understanding_level)
UNION
-- Changed id_obedience_level
SELECT NEW.id_link, 'id_obedience_level', CONVERT(OLD.id_obedience_level, CHAR), CONVERT(NEW.id_obedience_level, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_obedience_level <=> NEW.id_obedience_level)
UNION
-- Changed hand_signal_description
SELECT NEW.id_link, 'hand_signal_description', OLD.hand_signal_description, NEW.hand_signal_description, NEW.id_change_set
WHERE NOT OLD.hand_signal_description <=> NEW.hand_signal_description
UNION
-- Changed notes
SELECT NEW.id_link, 'notes', OLD.notes, NEW.notes, NEW.id_change_set
WHERE NOT OLD.notes <=> NEW.notes
UNION
/*
-- Changed has_button
SELECT NEW.id_link, 'has_button', CONVERT(CONVERT(OLD.has_button, SIGNED), CHAR), CONVERT(CONVERT(NEW.has_button, SIGNED), CHAR), NEW.id_change_set
WHERE NOT (OLD.has_button <=> NEW.has_button)
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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Personal_Best;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Personal_Best;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Personal_Best
BEFORE INSERT ON parts.DOG_Personal_Best
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Personal_Best
BEFORE UPDATE ON parts.DOG_Personal_Best
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Personal_Best_Audit (
id_personal_best
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed id_dog_command_link
SELECT NEW.id_personal_best, 'id_dog_command_link', CONVERT(OLD.id_dog_command_link, CHAR), CONVERT(NEW.id_dog_command_link, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_dog_command_link <=> NEW.id_dog_command_link)
UNION
-- Changed is_achieved_using_button
SELECT NEW.id_personal_best, 'is_achieved_using_button', CONVERT(CONVERT(OLD.is_achieved_using_button, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_achieved_using_button, SIGNED), CHAR), NEW.id_change_set
WHERE NOT (OLD.is_achieved_using_button <=> NEW.is_achieved_using_button)
UNION
-- Changed situation
SELECT NEW.id_personal_best, 'situation', OLD.situation, NEW.situation, NEW.id_change_set
WHERE NOT OLD.situation <=> NEW.situation
UNION
-- Changed quantity
SELECT NEW.id_personal_best, 'quantity', CONVERT(OLD.quantity, CHAR), CONVERT(NEW.quantity, CHAR), NEW.id_change_set
WHERE NOT (OLD.quantity <=> NEW.quantity)
UNION
-- Changed duration_seconds
SELECT NEW.id_personal_best, 'duration_seconds', CONVERT(OLD.duration_seconds, CHAR), CONVERT(NEW.duration_seconds, CHAR), NEW.id_change_set
WHERE NOT (OLD.duration_seconds <=> NEW.duration_seconds)
UNION
-- Changed active
SELECT NEW.id_personal_best, '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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Location;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Location;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Location
BEFORE INSERT ON parts.DOG_Location
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Location
BEFORE UPDATE ON parts.DOG_Location
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Location_Audit (
id_location
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed code
SELECT NEW.id_location, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT (OLD.code <=> NEW.code)
UNION
-- Changed name
SELECT NEW.id_location, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT (OLD.name <=> NEW.name)
UNION
-- Changed active
SELECT NEW.id_location, '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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Location_Link;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Location_Link;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Location_Link
BEFORE INSERT ON parts.DOG_Location_Link
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Location_Link
BEFORE UPDATE ON parts.DOG_Location_Link
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Location_Link_Audit (
id_link
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed id_location_parent
SELECT NEW.id_link, 'id_location_parent', CONVERT(OLD.id_location_parent, CHAR), CONVERT(NEW.id_location_parent, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_location_parent <=> NEW.id_location_parent)
UNION
-- Changed id_location_child
SELECT NEW.id_link, 'id_location_child', CONVERT(OLD.id_location_child, CHAR), CONVERT(NEW.id_location_child, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_location_child <=> NEW.id_location_child)
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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Colour;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Colour;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Colour
BEFORE INSERT ON parts.DOG_Colour
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Colour
BEFORE UPDATE ON parts.DOG_Colour
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Colour_Audit (
id_colour
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed code
SELECT NEW.id_colour, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT (OLD.code <=> NEW.code)
UNION
-- Changed name
SELECT NEW.id_colour, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT (OLD.name <=> NEW.name)
UNION
-- Changed active
SELECT NEW.id_colour, '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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Button_Shape;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Button_Shape;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Button_Shape
BEFORE INSERT ON parts.DOG_Button_Shape
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Button_Shape
BEFORE UPDATE ON parts.DOG_Button_Shape
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Button_Shape_Audit (
id_button_shape
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed code
SELECT NEW.id_button_shape, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT (OLD.code <=> NEW.code)
UNION
-- Changed name
SELECT NEW.id_button_shape, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT (OLD.name <=> NEW.name)
UNION
-- Changed description
SELECT NEW.id_button_shape, 'description', OLD.description, NEW.description, NEW.id_change_set
WHERE NOT (OLD.description <=> NEW.description)
UNION
-- Changed active
SELECT NEW.id_button_shape, '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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Image;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Image;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Image
BEFORE INSERT ON parts.DOG_Image
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Image
BEFORE UPDATE ON parts.DOG_Image
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Image_Audit (
id_image
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed id_file_type
SELECT NEW.id_image, 'id_file_type', CONVERT(OLD.id_file_type, CHAR), CONVERT(NEW.id_file_type, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_file_type <=> NEW.id_file_type)
UNION
-- Changed id_dog
SELECT NEW.id_image, 'id_dog', CONVERT(OLD.id_dog, CHAR), CONVERT(NEW.id_dog, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_dog <=> NEW.id_dog)
UNION
-- Changed path
SELECT NEW.id_image, 'path', OLD.path, NEW.path, NEW.id_change_set
WHERE NOT (OLD.path <=> NEW.path)
UNION
-- Changed display_order
SELECT NEW.id_image, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set
WHERE NOT (OLD.display_order <=> NEW.display_order)
UNION
-- Changed active
SELECT NEW.id_image, '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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Button_Icon;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Button_Icon;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Button_Icon
BEFORE INSERT ON parts.DOG_Button_Icon
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Button_Icon
BEFORE UPDATE ON parts.DOG_Button_Icon
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Button_Icon_Audit (
id_button_icon
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed id_image
SELECT NEW.id_button_icon, 'id_image', CONVERT(OLD.id_image, CHAR), CONVERT(NEW.id_image, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_image <=> NEW.id_image)
UNION
-- Changed code
SELECT NEW.id_button_icon, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT (OLD.code <=> NEW.code)
UNION
-- Changed name
SELECT NEW.id_button_icon, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT (OLD.name <=> NEW.name)
UNION
-- Changed description
SELECT NEW.id_button_icon, 'description', OLD.description, NEW.description, NEW.id_change_set
WHERE NOT (OLD.description <=> NEW.description)
UNION
-- Changed active
SELECT NEW.id_button_icon, '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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Command_Button_Link;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Command_Button_Link;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Command_Button_Link
BEFORE INSERT ON parts.DOG_Command_Button_Link
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Command_Button_Link
BEFORE UPDATE ON parts.DOG_Command_Button_Link
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Command_Button_Link_Audit (
id_link
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed id_command
SELECT NEW.id_link, 'id_command', CONVERT(OLD.id_command, CHAR), CONVERT(NEW.id_command, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_command <=> NEW.id_command)
UNION
-- Changed id_button_shape
SELECT NEW.id_link, 'id_button_shape', CONVERT(OLD.id_button_shape, CHAR), CONVERT(NEW.id_button_shape, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_button_shape <=> NEW.id_button_shape)
UNION
-- Changed id_button_colour
SELECT NEW.id_link, 'id_button_colour', CONVERT(OLD.id_button_colour, CHAR), CONVERT(NEW.id_button_colour, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_button_colour <=> NEW.id_button_colour)
UNION
-- Changed id_button_icon
SELECT NEW.id_link, 'id_button_icon', CONVERT(OLD.id_button_icon, CHAR), CONVERT(NEW.id_button_icon, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_button_icon <=> NEW.id_button_icon)
UNION
-- Changed id_location
SELECT NEW.id_link, 'id_location', CONVERT(OLD.id_location, CHAR), CONVERT(NEW.id_location, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_location <=> NEW.id_location)
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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Drive;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Drive;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Drive
BEFORE INSERT ON parts.DOG_Drive
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Drive
BEFORE UPDATE ON parts.DOG_Drive
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Drive_Audit (
id_drive
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed code
SELECT NEW.id_drive, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT (OLD.code <=> NEW.code)
UNION
-- Changed name
SELECT NEW.id_drive, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT (OLD.name <=> NEW.name)
UNION
-- Changed active
SELECT NEW.id_drive, '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 ;
USE parts;
DROP TRIGGER IF EXISTS parts.before_insert_DOG_Dog_Drive_Link;
DROP TRIGGER IF EXISTS parts.before_update_DOG_Dog_Drive_Link;
DELIMITER //
CREATE TRIGGER parts.before_insert_DOG_Dog_Drive_Link
BEFORE INSERT ON parts.DOG_Dog_Drive_Link
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER parts.before_update_DOG_Dog_Drive_Link
BEFORE UPDATE ON parts.DOG_Dog_Drive_Link
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO parts.DOG_Dog_Drive_Link_Audit (
id_link
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed id_dog
SELECT NEW.id_link, 'id_dog', CONVERT(OLD.id_dog, CHAR), CONVERT(NEW.id_dog, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_dog <=> NEW.id_dog)
UNION
-- Changed id_drive
SELECT NEW.id_link, 'id_drive', CONVERT(OLD.id_drive, CHAR), CONVERT(NEW.id_drive, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_drive <=> NEW.id_drive)
UNION
-- Changed dominance_ratio
SELECT NEW.id_link, 'dominance_ratio', CONVERT(OLD.dominance_ratio, CHAR), CONVERT(NEW.dominance_ratio, CHAR), NEW.id_change_set
WHERE NOT (OLD.dominance_ratio <=> NEW.dominance_ratio)
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 ;
USE parts;
DROP PROCEDURE IF EXISTS parts.p_core_validate_guid;
DROP PROCEDURE IF EXISTS parts.p_core_validate_guid_test;
DELIMITER //
CREATE PROCEDURE parts.p_core_validate_guid (
IN a_guid BINARY(36)
)
BEGIN
IF ISNULL(a_guid) THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'GUID is required.'
;
END IF;
END //
DELIMITER ;
DELIMITER //
CREATE PROCEDURE parts.p_core_validate_guid_test ()
BEGIN
CALL parts.p_core_validate_guid ( 'nips' );
CALL parts.p_core_validate_guid ( NULL );
END //
DELIMITER ;
-- CALL parts.p_core_validate_guid_test();
USE parts;
DROP PROCEDURE IF EXISTS parts.p_core_debug_timing_reporting;
DELIMITER //
CREATE PROCEDURE parts.p_core_debug_timing_reporting (
IN a_time_start TIMESTAMP(6)
)
BEGIN
/*
PROCEDURE parts.p_core_debug_timing_reporting
Shared method timing reporting
*/
DECLARE v_time_end TIMESTAMP(6);
SET v_time_end := CURRENT_TIMESTAMP(6);
SELECT
a_time_start
, UNIX_TIMESTAMP(a_time_start)
, MICROSECOND(a_time_start) / 1000
, v_time_end
, UNIX_TIMESTAMP(v_time_end)
, MICROSECOND(v_time_end) / 1000
, v_time_end - a_time_start AS timestamp_delta
, UNIX_TIMESTAMP(v_time_end - a_time_start) AS UNIX_TIMESTAMP_timestamp_delta
, MICROSECOND(v_time_end - a_time_start) AS MICROSECOND_timestamp_delta
-- , TIME_FORMAT(TIMEDIFF(v_time_end, a_time_start), '%H:%i:%s') AS time_difference
, CONCAT(
TIME_FORMAT(TIMEDIFF(v_time_end, a_time_start), '%H hours, %i minutes, %s seconds'),
', ',
TIMESTAMPDIFF(MICROSECOND, a_time_start, v_time_end) % 1000000 / 1000, ' milliseconds'
) AS time_difference
;
END //
DELIMITER ;
/*
CALL parts.p_core_debug_timing_reporting (
CURRENT_TIMESTAMP(6)
);
*/
USE parts;
DROP PROCEDURE IF EXISTS parts.p_core_split;
DELIMITER //
CREATE PROCEDURE parts.p_core_split (
IN a_guid BINARY(36)
, IN a_string LONGTEXT
, IN a_separator VARCHAR(1000)
-- IN a_allow_empty BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_has_string BIT;
DECLARE v_has_separator BIT;
DECLARE v_i_separator INT;
DECLARE v_i_start INT;
DECLARE v_i_end INT;
DECLARE v_current_item VARCHAR(4000);
DECLARE v_time_start TIMESTAMP(6);
SET v_time_start := CURRENT_TIMESTAMP(6);
SET a_string := IFNULL(a_string, '');
SET a_separator := IFNULL(a_separator, '');
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_guid
, a_string
, a_separator
, a_debug
;
END IF;
CALL parts.p_core_validate_guid ( a_guid );
DROP TABLE IF EXISTS tmp_Split_Split;
CREATE TEMPORARY TABLE tmp_Split_Split (
display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
substring VARCHAR(4000) NOT NULL
);
SET v_has_string = CASE WHEN a_string = '' THEN 0 ELSE 1 END;
SET v_has_separator = CASE WHEN a_separator = '' THEN 0 ELSE 1 END;
IF v_has_string THEN
SET v_i_start = 1;
SET v_i_end = LOCATE(',', a_string);
WHILE v_i_end > 0 DO
SET v_current_item = SUBSTRING(a_string, v_i_start, v_i_end - v_i_start);
INSERT INTO tmp_Split_Split (substring) VALUES (v_current_item);
SET v_i_start = v_i_end + 1;
SET v_i_end = LOCATE(',', a_string, v_i_start);
END WHILE;
SET v_current_item = SUBSTRING(a_string, v_i_start);
INSERT INTO tmp_Split_Split (substring) VALUES (TRIM(v_current_item));
END IF;
IF EXISTS (SELECT * FROM tmp_Split_Split LIMIT 1) THEN
START TRANSACTION;
INSERT INTO parts.CORE_Split_Temp (
guid
, display_order
, substring
)
SELECT
a_guid
, display_order
, substring
FROM tmp_Split_Split
;
COMMIT;
END IF;
DROP TABLE IF EXISTS tmp_Split_Split;
IF a_debug = 1 THEN
CALL parts.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL parts.p_core_split (
'nips'
, 'noods, cheese ' -- a_string
, ',' -- a_separator
-- '0', -- a_allow_empty
, 1
);
SELECT *
FROM parts.CORE_Split_Temp
WHERE GUID = 'nips';
CALL parts.p_core_clear_split_temp( 'nips' );
*/
USE parts;
DROP PROCEDURE IF EXISTS parts.p_core_clear_split;
DELIMITER //
CREATE PROCEDURE parts.p_core_clear_split (
IN a_guid BINARY(36)
)
BEGIN
CALL parts.p_core_validate_guid( a_guid );
START TRANSACTION;
-- DROP TABLE IF EXISTS
DELETE FROM parts.CORE_Split_Temp
WHERE GUID = a_guid
;
COMMIT;
END //
DELIMITER ;
/*
CALL parts.p_core_clear_split ( 'nips' );
*/
USE parts;
DROP PROCEDURE IF EXISTS parts.p_core_split_key_value_pair_csv;
DELIMITER //
CREATE PROCEDURE parts.p_core_split_key_value_pair_csv (
IN a_guid BINARY(36)
, IN a_string LONGTEXT
, IN a_debug BIT
)
BEGIN
DECLARE v_has_string BIT;
DECLARE v_current_item VARCHAR(4000);
DECLARE v_time_start TIMESTAMP(6);
SET v_time_start := CURRENT_TIMESTAMP(6);
SET a_string := IFNULL(a_string, '');
SET a_debug := IFNULL(a_debug, 0);
SET v_has_string = CASE WHEN a_string = '' THEN 0 ELSE 1 END;
IF a_debug = 1 THEN
SELECT
a_guid
, a_string
, a_debug
;
END IF;
CALL parts.p_core_validate_guid ( a_guid );
DROP TABLE IF EXISTS tmp_Input_Split_Key_Value_Pair_Csv;
DROP TABLE IF EXISTS tmp_Split_Split_Key_Value_Pair_Csv;
CREATE TEMPORARY TABLE tmp_Input_Split_Key_Value_Pair_Csv (
input_string TEXT
);
CREATE TEMPORARY TABLE tmp_Split_Split_Key_Value_Pair_Csv (
id INT AUTO_INCREMENT PRIMARY KEY
, key_column VARCHAR(4000)
, value_column VARCHAR(4000)
);
INSERT INTO tmp_Input_Split_Key_Value_Pair_Csv (
input_string
)
VALUES (
a_string
);
INSERT INTO tmp_Split_Split_Key_Value_Pair_Csv (key_column, value_column)
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(t.pair, ':', 1), ',', -1) AS key_column,
SUBSTRING_INDEX(t.pair, ':', -1) AS value_column
FROM (
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(input_string, ',', n), ',', -1) pair
FROM temp_input
CROSS JOIN (
SELECT a.N + b.N * 10 + 1 n
FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
CROSS JOIN (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
ORDER BY n
) numbers
WHERE n <= 1 + (LENGTH(input_string) - LENGTH(REPLACE(input_string, ',', '')))
) t;
IF EXISTS (SELECT * FROM tmp_Split_Split_Key_Value_Pair_Csv LIMIT 1) THEN
START TRANSACTION;
INSERT INTO parts.CORE_Split_Key_Value_Pair_Csv_Temp (
guid
, id
, key_column
, value_column
)
SELECT
a_guid
, id
, key_column
, value_column
FROM tmp_Split_Split_Key_Value_Pair_Csv
;
COMMIT;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Input_Split_Key_Value_Pair_Csv;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Split_Key_Value_Pair_Csv;
IF a_debug = 1 THEN
CALL parts.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL parts.p_core_split_key_value_pair_csv (
'nipsnipsnipsnipsnipsnipsnipsnipsnips'
, '1:100,2:200,3:300,4:400' -- a_string
, 1
);
SELECT *
FROM parts.CORE_Split_key_value_pair_csv_Temp
WHERE GUID = 'nipsnipsnipsnipsnipsnipsnipsnipsnips';
CALL parts.p_core_clear_split_key_value_pair_csv_temp( 'nipsnipsnipsnipsnipsnipsnipsnipsnips' );
*/
USE parts;
DROP PROCEDURE IF EXISTS parts.p_core_clear_split_key_value_pair_csv;
DELIMITER //
CREATE PROCEDURE parts.p_core_clear_split_key_value_pair_csv (
IN a_guid BINARY(36)
)
BEGIN
CALL parts.p_core_validate_guid( a_guid );
START TRANSACTION;
-- DROP TABLE IF EXISTS
DELETE FROM parts.CORE_Split_Key_Value_Pair_Csv_Temp
WHERE GUID = a_guid
;
COMMIT;
END //
DELIMITER ;
/*
CALL parts.p_core_clear_split_key_value_pair_csv ( 'nips' );
*/
USE parts;
DROP PROCEDURE IF EXISTS parts.p_DOG_user_eval;
DROP PROCEDURE IF EXISTS parts.p_DOG_calc_user;
DELIMITER //
CREATE PROCEDURE parts.p_DOG_calc_user (
IN a_guid BINARY(36)
, IN a_ids_user TEXT
, IN a_get_inactive_user BIT
, IN a_ids_permission VARCHAR(4000)
, IN a_debug BIT
)
BEGIN
DECLARE v_has_filter_permission BIT;
DECLARE v_has_filter_user BIT;
DECLARE v_id_permission INT;
DECLARE v_time_start TIMESTAMP(6);
DECLARE v_ids_row_delete VARCHAR(500);
DECLARE v_code_type_error_bad_data VARCHAR(200);
DECLARE v_id_type_error_bad_data INT;
DECLARE v_code_error_permission VARCHAR(200);
DECLARE v_id_permission_required INT;
DECLARE v_priority_access_level_required INT;
DECLARE v_priority_access_level_view INT;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := (SELECT code FROM parts.CORE_Msg_Error_Type WHERE code = 'BAD_DATA');
SET v_id_type_error_bad_data := (SELECT id_type FROM parts.CORE_Msg_Error_Type WHERE code = v_code_type_error_bad_data);
SET v_code_error_permission := (SELECT code FROM parts.CORE_Msg_Error_Type WHERE id_type = 2);
SET v_priority_access_level_view := (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1);
CALL parts.p_core_validate_guid ( a_guid );
SET a_ids_user := TRIM(IFNULL(a_ids_user, ''));
SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0);
SET a_ids_permission := TRIM(IFNULL(a_ids_permission, ''));
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_guid
, a_ids_user
, a_get_inactive_user
, a_ids_permission
, a_debug
;
END IF;
DROP TABLE IF EXISTS tmp_Calc_User;
DROP TABLE IF EXISTS tmp_User_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Calc_User;
CREATE TEMPORARY TABLE tmp_Calc_User (
id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT NULL
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT NULL
, priority_access_level_user INT NULL
, has_access BIT
);
CREATE TEMPORARY TABLE tmp_User_Calc_User (
id_user INT NOT NULL
, is_super_user BIT NOT NULL
-- , id_access_level INT
, priority_access_level INT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_User (
display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT NULL
, code VARCHAR(100) NOT NULL
, msg VARCHAR(4000) NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Calc_User (
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
);
DELETE FROM tmp_Split_Calc_User;
SET v_has_filter_user = CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END;
SET a_ids_permission = REPLACE(a_ids_permission, '|', ',');
SET v_has_filter_permission = CASE WHEN a_ids_permission = '' THEN 0 ELSE 1 END;
-- SET v_id_access_level_view = (SELECT id_access_level FROM parts.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1);
-- Permission IDs
IF NOT v_has_filter_permission THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, 'Permission ID required.'
;
ELSE
CALL parts.p_core_split(a_guid, a_ids_permission, ',', a_debug);
INSERT INTO tmp_Split_Calc_User (
substring
, as_int
)
SELECT
substring
, CONVERT(substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp
WHERE
GUID = a_guid
AND NOT ISNULL(substring)
AND substring != ''
;
CALL parts.p_core_clear_split( a_guid );
-- Invalid or inactive
IF EXISTS (
SELECT PERM.id_permission
FROM tmp_Split_Calc_User t_S
LEFT JOIN parts.DOG_Permission PERM ON t_S.as_int = PERM.id_permission
WHERE
ISNULL(t_S.as_int)
OR ISNULL(PERM.id_permission)
OR PERM.active = 0
) THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive permission IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split_Calc_User t_S
LEFT JOIN parts.DOG_Permission PERM ON t_S.as_int = PERM.id_permission
WHERE
ISNULL(t_S.as_int)
OR ISNULL(PERM.id_permission)
OR PERM.active = 0
;
ELSE
SELECT
PERM.id_permission
, PERM.id_access_level_required
INTO
v_id_permission_required
, v_priority_access_level_required
FROM tmp_Split_Calc_User t_S
LEFT JOIN parts.DOG_Permission PERM ON t_S.as_int = PERM.id_permission
INNER JOIN parts.DOG_Access_Level AL ON PERM.id_access_level_required = AL.id_access_level
ORDER BY AL.priority ASC
LIMIT 1
;
IF ISNULL(v_id_permission_required) THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, 'Valid Permission ID required.'
;
END IF;
END IF;
END IF;
DELETE FROM tmp_Split_Calc_User;
-- Users
CALL parts.p_core_split(a_guid, a_ids_user, ',', a_debug);
INSERT INTO tmp_Split_Calc_User (
substring
, as_int
)
SELECT
substring
, CONVERT(substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp
WHERE
GUID = a_guid
AND NOT ISNULL(substring)
AND substring != ''
;
CALL parts.p_core_clear_split( a_guid );
-- Invalid or inactive
IF EXISTS (SELECT U.id_user FROM tmp_Split_Calc_User t_S LEFT JOIN parts.DOG_User U ON t_S.as_int = U.id_user WHERE ISNULL(t_S.as_int) OR ISNULL(U.id_user) OR (a_get_inactive_user = 0 AND U.active = 0)) THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive user IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split_Calc_User t_S
LEFT JOIN parts.DOG_User U ON t_S.as_int = U.id_user
WHERE
ISNULL(t_S.as_int)
OR ISNULL(U.id_user)
OR (
a_get_inactive_user = 0
AND U.active = 0
)
;
ELSE
IF NOT EXISTS (SELECT * FROM tmp_Split_Calc_User) THEN
INSERT INTO tmp_Split_Calc_User (substring, as_int)
VALUES ( '', NULL );
END IF;
IF a_debug = 1 THEN
SELECT *
FROM tmp_Split_Calc_User;
END IF;
INSERT INTO tmp_User_Calc_User (
id_user
, is_super_user
, priority_access_level
)
SELECT
U.id_user
, IFNULL(U.is_super_user, 0) AS is_super_user
, IFNULL(MIN(AL_U.priority), v_priority_access_level_view) AS priority_access_level
FROM tmp_Split_Calc_User t_S
INNER JOIN parts.DOG_User U ON t_S.as_int = U.id_user
LEFT JOIN parts.DOG_User_Role_Link URL
ON U.id_user = URL.id_user
AND URL.active
LEFT JOIN parts.DOG_Role_Permission_Link RPL
ON URL.id_role = RPL.id_role
AND RPL.active
LEFT JOIN parts.DOG_Access_Level AL_U
ON RPL.id_access_level = AL_U.id_access_level
AND AL_U.active
GROUP BY U.id_user
;
INSERT INTO tmp_Calc_User (
id_user
, id_permission_required
, priority_access_level_required
, priority_access_level_user
, is_super_user
)
SELECT
t_UCU.id_user
, v_id_permission_required
, v_priority_access_level_required
, t_UCU.priority_access_level AS priority_access_level_user
, t_UCU.is_super_user AS is_super_user
FROM tmp_User_Calc_User t_UCU
;
END IF;
DELETE FROM tmp_Split_Calc_User;
-- Calculated fields
UPDATE tmp_Calc_User t_CU
SET
t_CU.has_access = (
(t_CU.is_super_user = 1)
OR (t_CU.priority_access_level_user <= t_CU.priority_access_level_required)
)
;
-- Export data to staging table
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_User) THEN
START TRANSACTION;
INSERT INTO parts.DOG_Calc_User_Temp (
guid
, id_user
, id_permission_required
, priority_access_level_required
, priority_access_level_user
, is_super_user
, has_access
)
SELECT
a_guid
, t_CU.id_user
, t_CU.id_permission_required
, t_CU.priority_access_level_required
, t_CU.priority_access_level_user
, t_CU.is_super_user
, t_CU.has_access
FROM tmp_Calc_User t_CU
;
COMMIT;
END IF;
IF a_debug = 1 THEN
SELECT * FROM tmp_Msg_Error_Calc_User;
SELECT * FROM tmp_Calc_User;
SELECT * FROM tmp_User_Calc_User;
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = a_guid;
CALL parts.p_DOG_clear_calc_user ( a_guid, a_debug );
END IF;
-- Clean up
DROP TABLE IF EXISTS tmp_Calc_User;
DROP TABLE IF EXISTS tmp_User_Calc_User;
DELETE FROM tmp_Split_Calc_User;
IF a_debug = 1 THEN
CALL parts.p_debug_timing_reporting( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL parts.p_DOG_calc_user (
'chips ' -- a_guid
, 1 -- a_ids_user
, 0 -- a_get_inactive_user
, '2' -- a_ids_permission
, '1' -- a_ids_access_level
, 0 -- a_debug
);
CALL parts.p_DOG_calc_user (
'chips ' -- a_guid
, 1 -- a_ids_user
, 0 -- a_get_inactive_user
, '2' -- a_ids_permission
, '1' -- a_ids_access_level
, 0 -- a_debug
);
*/
USE parts;
DROP PROCEDURE IF EXISTS parts.p_DOG_clear_calc_user;
DELIMITER //
CREATE PROCEDURE parts.p_DOG_clear_calc_user (
IN a_guid BINARY(36)
, IN a_debug BIT
)
BEGIN
DECLARE v_time_start TIMESTAMP(6);
SET v_time_start := CURRENT_TIMESTAMP(6);
CALL parts.p_core_validate_guid ( a_guid );
START TRANSACTION;
DELETE FROM parts.DOG_Calc_User_Temp
WHERE GUID = a_guid
;
COMMIT;
IF a_debug = 1 THEN
CALL parts.p_debug_timing_reporting( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL parts.p_DOG_clear_calc_user (
'chips ' -- a_guid
, 1 -- debug
);
SELECT *
FROM parts.DOG_Calc_User_Temp
WHERE GUID = 'chips '
;
*/
USE parts;
DROP PROCEDURE IF EXISTS parts.p_DOG_save_command;
DELIMITER //
CREATE PROCEDURE parts.p_DOG_save_command (
IN a_comment VARCHAR(500),
IN a_guid BINARY(36),
IN a_id_user INT,
IN a_debug BIT
)
BEGIN
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_permission_dog_admin INT;
DECLARE v_id_permission_dog_new INT;
DECLARE v_id_change_set INT;
DECLARE v_time_start TIMESTAMP(6);
DECLARE v_can_admin BIT;
DECLARE v_can_create BIT;
DECLARE exit handler for SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
@sqlstate = RETURNED_SQLSTATE
, @errno = MYSQL_ERRNO
, @text = MESSAGE_TEXT
;
ROLLBACK;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT NULL
, code VARCHAR(100)
, msg VARCHAR(4000) NOT NULL
);
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM parts.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM parts.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_admin := (SELECT PERMISSION.id_permission FROM parts.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_ADMIN' LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM parts.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
CALL parts.p_core_validate_guid ( a_guid );
DROP TABLE IF EXISTS tmp_Command;
CREATE TEMPORARY TABLE tmp_Command (
id_command INT
, id_command_category INT
, name VARCHAR(250)
, hand_signal_default_description TEXT
, can_have_button BIT
, notes TEXT
, active BIT
, is_new BIT
, name_error VARCHAR(250)
, name_command_category VARCHAR(250)
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT NULL
, code VARCHAR(100)
, msg VARCHAR(4000) NOT NULL
);
-- Get data from Temp table
INSERT INTO tmp_Command (
id_command
, id_command_category
, name
, hand_signal_default_description
, can_have_button
, notes
, active
, is_new
, name_command_category
)
SELECT
COMMAND_T.id_command AS id_command
, COMMAND_T.id_command_category AS id_command_category
, COALESCE(COMMAND_T.name, COMMAND.name) AS name
, COALESCE(COMMAND_T.hand_signal_default_description, COMMAND.hand_signal_default_description) AS hand_signal_default_description
, COALESCE(COMMAND_T.can_have_button, COMMAND.can_have_button) AS can_have_button
, COALESCE(COMMAND_T.notes, COMMAND.notes) AS notes
, COALESCE(COMMAND_T.active, COMMAND.active, 1) AS active
, CASE WHEN IFNULL(COMMAND_T.id_command, 0) < 1 THEN 1 ELSE 0 END AS is_new
, COMMAND_T.name_command_category AS name_command_category
FROM parts.DOG_Command_Temp COMMAND_T
LEFT JOIN parts.DOG_Command COMMAND ON COMMAND_T.id_command = COMMAND.id_command
WHERE COMMAND_T.guid = a_guid
;
UPDATE tmp_Command t_COMMAND
SET name_error = COALESCE(t_COMMAND.name, t_COMMAND.notes, t_COMMAND.name_command_category, '(No Command)')
;
-- Find missing id_command_category by name_command_category
UPDATE tmp_Command t_COMMAND
INNER JOIN parts.DOG_Command_Category COMMAND_CATEGORY ON t_COMMAND.name_command_category = COMMAND_CATEGORY.name
SET t_COMMAND.id_command_category = COMMAND_CATEGORY.id_command_category
WHERE t_COMMAND.id_command_category IS NULL
;
IF EXISTS (
SELECT *
FROM tmp_Command t_COMMAND
WHERE ISNULL(t_COMMAND.id_command_category)
LIMIT 1
) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following Command(s) do not have a Category: ', GROUP_CONCAT(t_COMMAND.name_error SEPARATOR ', ')) AS msg
FROM tmp_Command t_COMMAND
WHERE t_COMMAND.id_command_category IS NULL
;
END IF;
-- Validation
-- Missing mandatory fields
-- id_command_category
IF EXISTS (SELECT * FROM tmp_Command t_COMMAND WHERE ISNULL(t_COMMAND.id_command_category) LIMIT 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following Command(s) do not have a Category: ', GROUP_CONCAT(t_COMMAND.name_error SEPARATOR ', ')) AS msg
FROM tmp_Command t_COMMAND
WHERE ISNULL(t_COMMAND.id_command_category)
;
END IF;
-- name
IF EXISTS (SELECT * FROM tmp_Command t_COMMAND WHERE ISNULL(t_COMMAND.name) LIMIT 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following Command(s) do not have a Name: ', GROUP_CONCAT(t_COMMAND.name_error SEPARATOR ', ')) AS msg
FROM tmp_Command t_COMMAND
WHERE ISNULL(t_COMMAND.name)
;
END IF;
-- can_have_button
IF EXISTS (SELECT * FROM tmp_Command t_COMMAND WHERE ISNULL(t_COMMAND.can_have_button) LIMIT 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following Command(s) do not have a Can-Have-Button: ', GROUP_CONCAT(t_COMMAND.name_error SEPARATOR ', ')) AS msg
FROM tmp_Command t_COMMAND
WHERE ISNULL(t_COMMAND.can_have_button)
;
END IF;
-- Permissions
IF a_debug = 1 THEN
SELECT
a_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_admin
, v_id_permission_dog_new
, 0 -- a_debug
;
END IF;
CALL parts.p_DOG_calc_user(
a_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_admin
, 0 -- a_debug
);
SELECT
IFNULL(CU_T.has_access, 0)
INTO
v_can_admin
FROM parts.DOG_Calc_User_Temp CU_T
WHERE CU_T.GUID = a_guid
LIMIT 1
;
CALL parts.p_DOG_clear_calc_user(
a_guid
, 0 -- a_debug
);
CALL parts.p_DOG_calc_user(
a_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_new
, 0 -- a_debug
);
SELECT
IFNULL(CU_T.has_access, 0)
INTO
v_can_create
FROM parts.DOG_Calc_User_Temp CU_T
WHERE CU_T.GUID = a_guid
LIMIT 1
;
CALL parts.p_DOG_clear_calc_user(
a_guid
, 0 -- a_debug
);
IF (v_can_create = 0 AND EXISTS(SELECT * FROM tmp_Command WHERE is_new = 1)) THEN
DELETE t_ME
FROM tmp_Msg_Error t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to create new Commands.'
)
;
END IF;
IF (v_can_admin = 0 AND EXISTS(SELECT * FROM tmp_Command WHERE is_new = 0)) THEN
DELETE t_ME
FROM tmp_Msg_Error t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to admin Commands.'
)
;
END IF;
IF EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * from tmp_Command;
END IF;
DELETE FROM tmp_Command;
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
START TRANSACTION;
INSERT INTO parts.DOG_Dog_Change_Set (
comment
, id_user_updated_last_by
, updated_last_on
)
VALUES (
a_comment
, a_id_user
, v_time_start
)
;
SET v_id_change_set := LAST_INSERT_ID();
UPDATE parts.DOG_Command COMMAND
INNER JOIN tmp_Command t_COMMAND
ON COMMAND.id_command = t_COMMAND.id_command
AND t_COMMAND.is_new = 0
SET
COMMAND.id_command_category = t_COMMAND.id_command_category
, COMMAND.name = t_COMMAND.name
, COMMAND.hand_signal_default_description = t_COMMAND.hand_signal_default_description
, COMMAND.can_have_button = t_COMMAND.can_have_button
, COMMAND.notes = t_COMMAND.notes
, COMMAND.active = t_COMMAND.active
, COMMAND.id_change_set = v_id_change_set
;
INSERT INTO parts.DOG_Command (
id_command_category
, name
, hand_signal_default_description
, can_have_button
, notes
, active
, id_user_created_by
, created_on
)
SELECT
t_COMMAND.id_command_category AS id_command_category
, t_COMMAND.name AS name
, t_COMMAND.hand_signal_default_description AS hand_signal_default_description
, t_COMMAND.can_have_button AS can_have_button
, t_COMMAND.notes AS notes
, t_COMMAND.active AS active
, a_id_user AS created_by
, v_time_start AS created_on
FROM tmp_Command t_COMMAND
WHERE
t_COMMAND.is_new = 1
AND t_COMMAND.active = 1
;
COMMIT;
END IF;
START TRANSACTION;
DELETE FROM parts.DOG_Command_Temp
WHERE GUID = a_guid
;
COMMIT;
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 THEN
SELECT * from tmp_Command;
END IF;
DROP TEMPORARY TABLE tmp_Command;
DROP TEMPORARY TABLE tmp_Msg_Error;
IF a_debug = 1 THEN
CALL parts.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
select
*
-- COUNT(*)
-- delete
from parts.DOG_Command_Temp
;
select COUNT(*)
from parts.DOG_Command_Temp
;
select
*
-- COUNT(*)
-- delete
from parts.DOG_Command
;
select COUNT(*)
from parts.DOG_Command
;
CALL parts.p_DOG_save_command (
'nipples'
, (SELECT GUID FROM parts.DOG_Command_Temp COMMAND_TEMP ORDER BY id_temp DESC LIMIT 1)
, 1
, 1
);
select
*
-- COUNT(*)
-- delete
from parts.DOG_Command_Temp
;
select COUNT(*)
from parts.DOG_Command_Temp
;
select
*
-- COUNT(*)
-- delete
from parts.DOG_Command
;
select COUNT(*)
from parts.DOG_Command
;
*/
USE parts;
DROP PROCEDURE IF EXISTS parts.p_DOG_test_save_command;
DELIMITER //
CREATE PROCEDURE parts.p_DOG_test_save_command ()
BEGIN
DECLARE v_guid BINARY(36);
DECLARE v_time_start TIMESTAMP(6);
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_guid := 'nipple_ripple_chipple_spittle_pickle'; -- 123456789012345678901234567890123456
SELECT 'Start of Test';
SELECT *
FROM parts.DOG_Command
;
SELECT *
FROM parts.DOG_Command_Temp
;
START TRANSACTION;
INSERT INTO parts.DOG_Command_Temp (
id_command
, email
, name_contact
, name_company
, message
, guid
, active
)
/*
VALUES (
-1 -- id_command
, 'edward.middletonsmith@gmail.com' -- email
, 'Teddy' -- name_contact
, 'PARTS Ltd' -- name_company
, 'Sa dude' -- message
, v_guid
)
*/
VALUES (
-1 -- id_command
, 'edward.middletonsmith@gmail.com' -- email
, 'Teddy' -- name_contact
, 'PARTS Ltd' -- name_company
, 'hegrodorf is good' -- message
, v_guid
, 1 -- active
)
;
COMMIT;
SELECT *
FROM parts.DOG_Command_Temp
-- WHERE GUID = v_guid
;
CALL parts.p_DOG_save_command (
'Test save Command' -- comment
, v_guid -- guid
, 3 -- 1 -- id_user
, 1 -- debug
);
SELECT *
FROM parts.DOG_Command
;
SELECT *
FROM parts.DOG_Command_Temp
;
CALL parts.p_debug_timing_reporting ( v_time_start );
END //
DELIMITER ;
/*
SELECT 'Before Test';
SELECT *
FROM parts.DOG_Command
;
SELECT *
FROM parts.DOG_Command_Temp
;
CALL parts.p_DOG_test_save_command ();
SELECT 'After Test';
SELECT *
FROM parts.DOG_Command
;
SELECT *
FROM parts.DOG_Command_Temp
;
DELETE FROM parts.DOG_Command_Temp;
DROP TABLE IF EXISTS tmp_Msg_Error;
*/
USE parts;
DROP PROCEDURE IF EXISTS parts.p_DOG_get_many_dog_command;
DELIMITER //
CREATE PROCEDURE parts.p_DOG_get_many_dog_command (
IN a_id_user INT
, IN a_get_all_dog BIT
, IN a_get_inactive_dog BIT
, IN a_ids_dog TEXT
, IN a_get_all_command BIT
, IN a_get_inactive_command BIT
, IN a_ids_command TEXT
, IN a_get_all_understanding_level BIT
, IN a_get_inactive_understanding_level BIT
, IN a_ids_understanding_level TEXT
, IN a_get_all_obedience_level BIT
, IN a_get_inactive_obedience_level BIT
, IN a_ids_obedience_level TEXT
, IN a_debug BIT
)
BEGIN
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_has_filter_command BIT;
DECLARE v_has_filter_dog BIT;
DECLARE v_has_filter_obedience_level BIT;
DECLARE v_has_filter_understanding_level BIT;
DECLARE v_guid BINARY(36);
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_minimum INT;
DECLARE v_time_start TIMESTAMP(6);
DECLARE v_can_view BIT;
DECLARE exit handler for SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
@sqlstate = RETURNED_SQLSTATE
, @errno = MYSQL_ERRNO
, @text = MESSAGE_TEXT
;
ROLLBACK;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT NULL
, code VARCHAR(100) NOT NULL
, msg VARCHAR(4000) NOT NULL
);
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM parts.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_guid := UUID();
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM parts.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM parts.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM parts.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET a_id_user := IFNULL(a_id_user, 0);
SET a_get_all_dog := IFNULL(a_get_all_dog, 0);
SET a_get_inactive_dog := IFNULL(a_get_inactive_dog, 0);
SET a_ids_dog := TRIM(IFNULL(a_ids_dog, ''));
SET a_get_all_command := IFNULL(a_get_all_command, 0);
SET a_get_inactive_command := IFNULL(a_get_inactive_command, 0);
SET a_ids_command := TRIM(IFNULL(a_ids_command, ''));
SET a_get_all_understanding_level := IFNULL(a_get_all_understanding_level, 0);
SET a_get_inactive_understanding_level := IFNULL(a_get_inactive_understanding_level, 0);
SET a_ids_understanding_level := TRIM(IFNULL(a_ids_understanding_level, ''));
SET a_get_all_obedience_level := IFNULL(a_get_all_obedience_level, 0);
SET a_get_inactive_obedience_level := IFNULL(a_get_inactive_obedience_level, 0);
SET a_ids_obedience_level := TRIM(IFNULL(a_ids_obedience_level, ''));
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_id_user
, a_get_all_dog
, a_get_inactive_dog
, a_ids_dog
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_get_all_understanding_level
, a_get_inactive_understanding_level
, a_ids_understanding_level
, a_get_all_obedience_level
, a_get_inactive_obedience_level
, a_ids_obedience_level
, a_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_guid
, v_id_permission_dog_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Obedience_Level;
DROP TEMPORARY TABLE IF EXISTS tmp_Understanding_Level;
DROP TEMPORARY TABLE IF EXISTS tmp_Command;
DROP TEMPORARY TABLE IF EXISTS tmp_Dog;
CREATE TEMPORARY TABLE tmp_Dog (
id_dog INT NOT NULL
, name VARCHAR(250)
);
CREATE TEMPORARY TABLE tmp_Command (
id_command INT NOT NULL
-- , code VARCHAR(100)
, name VARCHAR(250)
);
CREATE TEMPORARY TABLE tmp_Understanding_Level (
id_understanding_level INT NOT NULL
, code VARCHAR(100)
, name VARCHAR(250)
);
CREATE TEMPORARY TABLE tmp_Obedience_Level (
id_obedience_level INT NOT NULL
, code VARCHAR(100)
, name VARCHAR(250)
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT NULL
, code VARCHAR(100) NOT NULL
, msg VARCHAR(4000) NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split (
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
);
DELETE FROM tmp_Split;
CALL parts.p_core_validate_guid ( v_guid );
SET v_has_filter_dog = CASE WHEN a_ids_dog = '' THEN 0 ELSE 1 END;
SET v_has_filter_command = CASE WHEN a_ids_command = '' THEN 0 ELSE 1 END;
SET v_has_filter_understanding_level = CASE WHEN a_ids_understanding_level = '' THEN 0 ELSE 1 END;
SET v_has_filter_obedience_level = CASE WHEN a_ids_obedience_level = '' THEN 0 ELSE 1 END;
-- Dogs
IF v_has_filter_dog = 1 THEN
CALL parts.p_split(v_guid, a_ids_dog, ',', a_debug);
INSERT INTO tmp_Split (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CONVERT(SPLIT_T.substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = v_guid
AND IFNULL(SPLIT_T.substring, '') <> ''
;
CALL parts.p_clear_split_temp( v_guid );
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF EXISTS (
SELECT *
FROM tmp_Split t_SPLIT
LEFT JOIN parts.DOG_Dog DOG ON t_SPLIT.as_int = DOG.id_dog
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(DOG.id_dog)
OR (
DOG.active = 0
AND a_get_inactive_dog = 0
)
) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive Dog IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split t_SPLIT
LEFT JOIN parts.DOG_Dog DOG ON t_SPLIT.as_int = DOG.id_dog
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(DOG.id_dog)
OR (
DOG.active = 0
AND a_get_inactive_dog = 0
)
;
ELSE
INSERT INTO tmp_Dog (
id_dog
, name
)
SELECT
DOG.id_dog
, DOG.name
FROM tmp_Split t_SPLIT
RIGHT JOIN parts.DOG_Dog DOG ON t_SPLIT.as_int = DOG.id_dog
WHERE
(
a_get_all_dog = 1
OR (
v_has_filter_dog = 1
AND NOT ISNULL(t_SPLIT.as_int)
)
)
AND (
a_get_inactive_dog = 1
OR DOG.active = 1
)
;
END IF;
END IF;
DELETE FROM tmp_Split;
-- Commands
IF v_has_filter_command = 1 THEN
CALL parts.p_split(v_guid, a_ids_command, ',', a_debug);
INSERT INTO tmp_Split (
substring
, as_int
)
SELECT
substring
, CONVERT(substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp
WHERE
GUID = v_guid
AND NOT ISNULL(substring)
AND substring <> ''
;
CALL parts.p_clear_split_temp( v_guid );
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF EXISTS (
SELECT *
FROM tmp_Split t_SPLIT
LEFT JOIN parts.DOG_Command COMMAND ON t_SPLIT.as_int = COMMAND.id_command
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(COMMAND.id_command)
OR (
COMMAND.active = 0
AND a_get_inactive_command = 0
)
) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive Command IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split t_SPLIT
LEFT JOIN parts.DOG_Command COMMAND ON t_SPLIT.as_int = COMMAND.id_command
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(COMMAND.id_command)
OR (
COMMAND.active = 0
AND a_get_inactive_command = 0
)
;
ELSE
INSERT INTO tmp_Command (
id_command
, name
)
SELECT
COMMAND.id_command
-- , COMMAND.code
, COMMAND.name
FROM tmp_Split t_SPLIT
RIGHT JOIN parts.DOG_Command COMMAND ON t_SPLIT.as_int = COMMAND.id_command
WHERE
(
a_get_all_command = 1
OR (
v_has_filter_command = 1
AND NOT ISNULL(t_SPLIT.as_int)
)
)
AND (
a_get_inactive_command = 1
OR COMMAND.active = 1
)
;
END IF;
END IF;
DELETE FROM tmp_Split;
-- Understanding Levels
IF v_has_filter_understanding_level = 1 THEN
CALL parts.p_split(v_guid, a_ids_understanding_level, ',', a_debug);
INSERT INTO tmp_Split (
substring
, as_int
)
SELECT
substring
, CONVERT(substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp
WHERE
GUID = v_guid
AND NOT ISNULL(substring)
AND substring <> ''
;
CALL parts.p_clear_split_temp( v_guid );
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF EXISTS (
SELECT *
FROM tmp_Split t_SPLIT
LEFT JOIN parts.DOG_Understanding_Level UNDERSTANDING_LEVEL ON t_SPLIT.as_int = UNDERSTANDING_LEVEL.id_understanding_level
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(UNDERSTANDING_LEVEL.id_understanding_level)
OR (
UNDERSTANDING_LEVEL.active = 0
AND a_get_inactive_understanding_level = 0
)
) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive Understanding Level IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split t_SPLIT
LEFT JOIN parts.DOG_Understanding_Level UNDERSTANDING_LEVEL ON t_SPLIT.as_int = UNDERSTANDING_LEVEL.id_understanding_level
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(UNDERSTANDING_LEVEL.id_understanding_level)
OR (
UNDERSTANDING_LEVEL.active = 0
AND a_get_inactive_understanding_level = 0
)
;
ELSE
INSERT INTO tmp_Understanding_Level (
id_understanding_level
, code
, name
)
SELECT
UNDERSTANDING_LEVEL.id_understanding_level
, UNDERSTANDING_LEVEL.code
, UNDERSTANDING_LEVEL.name
FROM tmp_Split t_SPLIT
RIGHT JOIN parts.DOG_Understanding_Level UNDERSTANDING_LEVEL ON t_SPLIT.as_int = UNDERSTANDING_LEVEL.id_understanding_level
WHERE
(
a_get_all_understanding_level = 1
OR (
v_has_filter_understanding_level = 1
AND NOT ISNULL(t_SPLIT.as_int)
)
)
AND (
a_get_inactive_understanding_level = 1
OR UNDERSTANDING_LEVEL.active = 1
)
;
END IF;
END IF;
DELETE FROM tmp_Split;
-- Obedience Levels
IF v_has_filter_obedience_level = 1 THEN
CALL parts.p_split(v_guid, a_ids_obedience_level, ',', a_debug);
INSERT INTO tmp_Split (
substring
, as_int
)
SELECT
substring
, CONVERT(substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp
WHERE
GUID = v_guid
AND NOT ISNULL(substring)
AND substring <> ''
;
CALL parts.p_clear_split_temp( v_guid );
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF EXISTS (
SELECT *
FROM tmp_Split t_SPLIT
LEFT JOIN parts.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_SPLIT.as_int = OBEDIENCE_LEVEL.id_obedience_level
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(OBEDIENCE_LEVEL.id_obedience_level)
OR (
OBEDIENCE_LEVEL.active = 0
AND a_get_inactive_obedience_level = 0
)
) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive Obedience Level IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split t_SPLIT
LEFT JOIN parts.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_SPLIT.as_int = OBEDIENCE_LEVEL.id_obedience_level
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(OBEDIENCE_LEVEL.id_obedience_level)
OR (
OBEDIENCE_LEVEL.active = 0
AND a_get_inactive_obedience_level = 0
)
;
ELSE
INSERT INTO tmp_Obedience_Level (
id_obedience_level
, code
, name
)
SELECT
OBEDIENCE_LEVEL.id_obedience_level
, OBEDIENCE_LEVEL.code
, OBEDIENCE_LEVEL.name
FROM tmp_Split t_SPLIT
RIGHT JOIN parts.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_SPLIT.as_int = OBEDIENCE_LEVEL.id_obedience_level
WHERE
(
a_get_all_obedience_level = 1
OR (
v_has_filter_obedience_level = 1
AND NOT ISNULL(t_SPLIT.as_int)
)
)
AND (
a_get_inactive_obedience_level = 1
OR OBEDIENCE_LEVEL.active = 1
)
;
END IF;
END IF;
DELETE FROM tmp_Split;
-- Permissions
IF a_debug = 1 THEN
SELECT
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_view
, 0 -- a_debug
;
END IF;
CALL parts.p_DOG_calc_user(
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_view
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM parts.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = v_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
END IF;
IF (v_can_view = 0) THEN
DELETE t_ME
FROM tmp_Msg_Error t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to view Commands.'
)
;
END IF;
CALL parts.p_DOG_clear_calc_user(
v_guid
, 0 -- a_debug
);
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Dog;
SELECT * FROM tmp_Command;
SELECT * FROM tmp_Obedience_Level;
END IF;
DELETE FROM tmp_Dog;
DELETE FROM tmp_Command;
SELECT * FROM tmp_Understanding_Level;
DELETE FROM tmp_Obedience_Level;
END IF;
-- Outputs
-- Commands
SELECT
DOG_COMMAND_LINK.id_link AS id_dog_command_link
, t_DOG.id_dog
, t_DOG.name
, t_COMMAND.id_command
-- , t_COMMAND.code
, t_COMMAND.name
, t_UNDERSTANDING_LEVEL.id_understanding_level
, t_UNDERSTANDING_LEVEL.code AS code_understanding_level
, t_UNDERSTANDING_LEVEL.name AS name_understanding_level
, t_OBEDIENCE_LEVEL.id_obedience_level
, t_OBEDIENCE_LEVEL.code AS code_obedience_level
, t_OBEDIENCE_LEVEL.name AS name_obedience_level
, DOG_COMMAND_LINK.active
FROM parts.DOG_Dog_Command_Link DOG_COMMAND_LINK
INNER JOIN tmp_Dog t_DOG ON DOG_COMMAND_LINK.id_dog = t_DOG.id_dog
INNER JOIN tmp_Command t_COMMAND ON DOG_COMMAND_LINK.id_command = t_COMMAND.id_command
INNER JOIN tmp_Understanding_Level t_UNDERSTANDING_LEVEL ON DOG_COMMAND_LINK.id_understanding_level = t_UNDERSTANDING_LEVEL.id_understanding_level
INNER JOIN tmp_Obedience_Level t_OBEDIENCE_LEVEL ON DOG_COMMAND_LINK.id_obedience_level = t_OBEDIENCE_LEVEL.id_obedience_level
;
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Dog;
SELECT * FROM tmp_Command;
SELECT * FROM tmp_Understanding_Level;
SELECT * FROM tmp_Obedience_Level;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Obedience_Level;
DROP TEMPORARY TABLE IF EXISTS tmp_Understanding_Level;
DROP TEMPORARY TABLE IF EXISTS tmp_Command;
DROP TEMPORARY TABLE IF EXISTS tmp_Dog;
IF a_debug = 1 THEN
CALL parts.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL parts.p_DOG_get_many_dog_command (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_dog
, 0 -- a_get_inactive_dog
, '' -- a_ids_dog
, 1 -- a_get_all_command
, 0 -- a_get_inactive_command
, '' -- a_ids_command
, 1 -- a_get_all_understanding_level
, 0 -- a_get_inactive_understanding_level
, '' -- a_ids_understanding_level
, 1 -- a_get_all_obedience_level
, 0 -- a_get_inactive_obedience_level
, '' -- a_ids_obedience_level
, 1 -- a_debug
);
*/
USE parts;
-- Error Message Types
/* Existing table */
INSERT INTO parts.CORE_Msg_Error_Type (
code
, name
, description
, is_breaking_error
)
VALUES
(
'BAD_DATA'
, 'Invalid data'
, 'Rubbish data'
, 1
)
, (
'NO_PERMISSION'
, 'No permission'
, 'Not authorised'
, 1
)
, (
'MYSQL_ERROR'
, 'MySQL error'
, 'MySQL execution error.'
, 1
)
, (
'WARNING'
, 'Warning'
, 'Non-breaking error.'
, 0
)
;
INSERT INTO parts.CORE_File_Type (
code
, name
, is_image
)
VALUES
(
'JPG'
, 'JPG'
, 1
)
;
-- Access Levels
INSERT INTO parts.DOG_Access_Level (
display_order
, code
, name
, priority
)
VALUES
(
1
, 'VIEW'
, 'View'
, 3
)
, (
2
, 'EDIT'
, 'Edit'
, 2
)
, (
3
, 'ADMIN'
, 'Admin'
, 1
)
;
-- Permission Groups
INSERT INTO parts.DOG_Permission_Group (
display_order
, code
, name
)
VALUES
(
0
, 'DOG'
, 'Dog'
)
, (
1
, 'USER'
, 'Admin User'
)
;
-- Permissions
INSERT INTO parts.DOG_Permission (
display_order
, code
, name
, id_permission_group
, id_access_level_required
)
VALUES
(
1
, 'DOG_VIEW'
, 'View Dog'
, 1
, 3
)
, (
1
, 'DOG_ADMIN'
, 'Admin Dog'
, 1
, 3
)
, (
1
, 'DOG_CREATE'
, 'Create Dog'
, 1
, 1
)
;
-- Users
INSERT INTO parts.DOG_User (
id_user_auth0
, firstname
, surname
, email
, is_super_user
, active
)
VALUES
(
'auth0|6582b95c895d09a70ba10fef' -- id_user_auth0
, 'Teddy' -- firstname
, 'Middleton-Smith' -- surname
, 'edward.middletonsmith@gmail.com' -- email
, 1 -- is_super_user
, 1 -- active
)
, (
'auth0|672659014296b7f94a9bab45' -- id_user_auth0
, 'Tierney' -- firstname
, 'Gullen' -- surname
, 'tierneybailey13@gmail.com' -- email
, 1 -- is_super_user
, 1 -- active
)
, (
NULL -- id_user_auth0
, 'Command Bot' -- firstname
, 'Bot' -- surname
, 'teddy@partsltd.co.uk' -- email
, 0 -- is_super_user
, 1 -- active
)
;
-- Roles
INSERT INTO parts.DOG_Role (
display_order
, code
, name
, id_user_created_by
)
VALUES
(
1
, 'MANAGER'
, 'Manager'
, 1
)
, (
2
, 'USER'
, 'User'
, 1
)
;
-- Role Permission link
INSERT INTO parts.DOG_Role_Permission_Link (
id_role
, id_permission
, id_access_level
, id_user_created_by
)
VALUES
(
1
, 1
, 3
, 1
)
, (
1
, 2
, 3
, 1
)
, (
1
, 3
, 3
, 1
)
, (
2
, 1
, 1
, 1
)
, (
2
, 2
, 1
, 1
)
, (
2
, 3
, 1
, 1
)
;
-- User Role link
INSERT INTO parts.DOG_User_Role_Link (
id_user
, id_role
, id_user_created_by
)
VALUES
(
1
, 1
, 1
)
, (
2
, 2
, 1
)
, (
3
, 2
, 1
)
;
-- Project-specific tables
INSERT INTO parts.DOG_Dog (
name
, appearance
, mass_kg
)
VALUES
(
'Molly'
, 'Cute'
, 20
)
;
INSERT INTO parts.DOG_Breed (
code
, name
)
VALUES
(
'BORDER_COLLIE'
, 'Border Collie'
)
;
INSERT INTO parts.DOG_Dog_Breed_Link (
id_dog
, id_breed
, lineage_ratio
)
VALUES
(
1
, 1
, 1
)
;
INSERT INTO parts.DOG_Understanding_Level (
code
, name
)
VALUES
(
'UNKNOWN'
, 'Not known'
)
, (
'INTRODUCED'
, 'Has been introduced'
)
, (
'RECOGNISES_COMBINED_VISUAL_AND_VERBAL_SIGNAL'
, 'Combined visual and verbal signal recognised'
)
, (
'RECOGNISES_VISUAL_SIGNAL'
, 'Visual signal alone recognised'
)
, (
'RECOGNISES_VERBAL_SIGNAL'
, 'Verbal signal alone recognised'
)
, (
'UNDERSTOOD'
, 'Understood'
)
;
INSERT INTO parts.DOG_Obedience_Level (
code
, name
)
VALUES
(
'REFUSAL'
, 'Refuses to obey'
)
, (
'ON_HER_TERMS'
, 'Might obey if she feels like it'
)
, (
'OBEYS_UNDISTRACTED'
, 'Obeys without distractions'
)
, (
'OBEYS_MILDLY_DISTRACTED'
, 'Obeys when mildly distracted'
)
, (
'OBEYS_PERFECTLY'
, 'Obeys in all situations'
)
;
INSERT INTO parts.DOG_Command_Category (
code
, name
)
VALUES
(
'ACTIVITIES'
, 'Activities'
)
, (
'BASIC_OBEDIENCE'
, 'Basic obedience'
)
, (
'BEHAVIOUR_MODIFICATION'
, 'Behaviour modification'
)
, (
'BODY_PARTS'
, 'Body parts'
)
, (
'CLOTHING_AND_EQUIPMENT'
, 'Clothing and equipment'
)
, (
'COMPARISON'
, 'Comparison'
)
, (
'ADJECTIVES'
, 'Compliments and insults (adjectives)'
)
, (
'EMOTIONAL_STATE'
, 'Emotional state'
)
, (
'ENVIRONMENT'
, 'Environment'
)
, (
'ESSENTIAL_NEEDS'
, 'Essential needs'
)
, (
'IMPULSE_CONTROL'
, 'Impulse control'
)
, (
'LOCATION'
, 'Location'
)
, (
'MANNERS'
, 'Manners'
)
, (
'MEALTIME'
, 'Mealtime'
)
, (
'PARTY_TRICK'
, 'Party trick'
)
, (
'PEOPLE'
, 'People'
)
, (
'PLAY'
, 'Play'
)
, (
'POSITION'
, 'Position'
)
, (
'QUESTIONS'
, 'Questions'
)
, (
'SERVICE'
, 'Service'
)
, (
'TIME_AND_SCHEDULING'
, 'Time and scheduling'
)
, (
'UTILITY'
, 'Utility'
)
;
/*
INSERT INTO parts.DOG_Command (
code
, name
)
VALUES
(
'lick'
, 'nips'
)
;
*/
/*
INSERT INTO parts.DOG_Dog_Command_Link (
id_dog
, id_command
, id_understanding_level
, id_obedience_level
, notes
)
VALUES
(
'lick'
, 'nips'
)
;
*/
INSERT INTO parts.DOG_Location (
code
, name
)
VALUES
(
'LOUNGE'
, 'Lounge'
)
;
/*
INSERT INTO parts.DOG_Location_Link (
id_location_parent
, id_location_child
)
VALUES
(
1
, 2
)
;
*/
INSERT INTO parts.DOG_Colour (
code
, name
)
VALUES
(
'RED'
, 'Red'
)
, (
'GREEN'
, 'Green'
)
;
INSERT INTO parts.DOG_Button_Shape (
code
, name
, description
)
VALUES
(
'ROUND'
, 'Round'
, 'Cylindrical'
)
, (
'HEXAGONAL'
, 'Hexagonal'
, 'Hexagonal prism'
)
;
/*
INSERT INTO parts.DOG_Image (
id_file_type
, id_dog
, path
, display_order
)
VALUES
(
1
, 1
, NULL
, NULL
)
;
*/
/*
INSERT INTO parts.DOG_Button_Icon (
id_image
, code
, name
, description
)
VALUES
(
1
, NULL
)
;
*/
/*
INSERT INTO parts.DOG_Command_Button_Link (
id_command
, id_button_shape
, id_button_colour
, id_button_icon
, id_location
)
VALUES
(
1 -- AS id_command
, 1 -- AS id_button_shape
, 1 -- AS id_button_colour
, NULL -- AS id_button_icon
, 1 -- AS id_location
)
;
*/
INSERT INTO parts.DOG_Drive (
code
, name
)
VALUES
(
'PREY'
, 'Prey'
)
, (
'PACK'
, 'Pack'
)
;
INSERT INTO parts.DOG_Dog_Drive_Link (
id_dog
, id_drive
, dominance_ratio
)
VALUES
(
1
, 1
, 0.5
)
, (
1
, 2
, 0.5
)
;
/*
Post Excel-insert:
SELECT *
FROM demo.DOG_Dog;
/ *
SELECT *
FROM demo.DOG_Command;
* /
SELECT *
-- DELETE
FROM demo.DOG_Understanding_Level;
SELECT *
-- DELETE
FROM demo.DOG_Obedience_Level;
/ *
INSERT INTO demo.DOG_Dog_Command_Link (
id_dog
, id_command
, id_understanding_level
, id_obedience_level
, notes
)
SELECT
DOG.id_dog
, COMMAND.id_command
,
FROM demo.DOG_Dog DOG
CROSS JOIN demo.DOG_Command COMMAND
WHERE DOG.name = 'Molly'
* /
*/
-- Core tables
-- Error Message type
SELECT * FROM parts.CORE_Msg_Error_Type;
-- Common project tables
-- User Change Sets
SELECT * FROM parts.DOG_User_Change_Set;
-- Access Levels
SELECT * FROM parts.DOG_Access_Level;
-- Permission Groups
SELECT * FROM parts.DOG_Permission_Group;
-- Permissions
SELECT * FROM parts.DOG_Permission;
-- Users
SELECT * FROM parts.DOG_User;
SELECT * FROM parts.DOG_User_Audit;
-- Roles
SELECT * FROM parts.DOG_Role;
SELECT * FROM parts.DOG_Role_Audit;
-- Role Permission link
SELECT * FROM parts.DOG_Role_Permission_Link;
SELECT * FROM parts.DOG_Role_Permission_Link_Audit;
-- User Role link
SELECT * FROM parts.DOG_User_Role_Link;
SELECT * FROM parts.DOG_User_Role_Link_Audit;
-- Project-specific tables
-- Command Change Sets
SELECT * FROM parts.DOG_Dog_Change_Set;
-- Commands
SELECT * FROM parts.DOG_Dog;
SELECT * FROM parts.DOG_Dog_Audit;
SELECT * FROM parts.DOG_Dog_Temp;
SELECT * FROM parts.DOG_Breed;
SELECT * FROM parts.DOG_Breed_Audit;
SELECT * FROM parts.DOG_Breed_Temp;
SELECT * FROM parts.DOG_Dog_Breed_Link;
SELECT * FROM parts.DOG_Dog_Breed_Link_Audit;
SELECT * FROM parts.DOG_Dog_Breed_Link_Temp;
SELECT * FROM parts.DOG_Obedience_Level;
SELECT * FROM parts.DOG_Obedience_Level_Audit;
SELECT * FROM parts.DOG_Obedience_Level_Temp;
SELECT * FROM parts.DOG_Command_Category;
SELECT * FROM parts.DOG_Command_Category_Audit;
SELECT * FROM parts.DOG_Command_Category_Temp;
SELECT * FROM parts.DOG_Command;
SELECT * FROM parts.DOG_Command_Audit;
SELECT * FROM parts.DOG_Command_Temp;
SELECT * FROM parts.DOG_Dog_Command_Link;
SELECT * FROM parts.DOG_Dog_Command_Link_Audit;
SELECT * FROM parts.DOG_Dog_Command_Link_Temp;
SELECT * FROM parts.DOG_Location;
SELECT * FROM parts.DOG_Location_Audit;
SELECT * FROM parts.DOG_Location_Temp;
SELECT * FROM parts.DOG_Location_Link;
SELECT * FROM parts.DOG_Location_Link_Audit;
SELECT * FROM parts.DOG_Location_Link_Temp;
SELECT * FROM parts.DOG_Colour;
SELECT * FROM parts.DOG_Colour_Audit;
SELECT * FROM parts.DOG_Colour_Temp;
SELECT * FROM parts.DOG_Button_Shape;
SELECT * FROM parts.DOG_Button_Shape_Audit;
SELECT * FROM parts.DOG_Button_Shape_Temp;
SELECT * FROM parts.DOG_Image;
SELECT * FROM parts.DOG_Image_Audit;
SELECT * FROM parts.DOG_Image_Temp;
SELECT * FROM parts.DOG_Button_Icon;
SELECT * FROM parts.DOG_Button_Icon_Audit;
SELECT * FROM parts.DOG_Button_Icon_Temp;
SELECT * FROM parts.DOG_Command_Button_Link;
SELECT * FROM parts.DOG_Command_Button_Link_Audit;
SELECT * FROM parts.DOG_Command_Button_Link_Temp;
SELECT * FROM parts.DOG_Drive;
SELECT * FROM parts.DOG_Drive_Audit;
SELECT * FROM parts.DOG_Drive_Temp;
SELECT * FROM parts.DOG_Dog_Drive_Link;
SELECT * FROM parts.DOG_Dog_Drive_Link_Audit;
SELECT * FROM parts.DOG_Dog_Drive_Link_Temp;