update schema to cover postgresql.
This commit is contained in:
@@ -1,565 +0,0 @@
|
|||||||
-- CREATE SCHEMA
|
|
||||||
/*
|
|
||||||
DROP USER "C##ART" CASCADE;
|
|
||||||
|
|
||||||
CREATE USER "C##ART" IDENTIFIED BY Welcome123;
|
|
||||||
|
|
||||||
GRANT connect, resource, DBA to "C##ART";
|
|
||||||
*/
|
|
||||||
|
|
||||||
-- ORACLE SQL SCHEMA DDL:
|
|
||||||
|
|
||||||
-- DROP TABLES FIRST; IF EXIST
|
|
||||||
SET ECHO ON;
|
|
||||||
SET SERVEROUTPUT ON;
|
|
||||||
|
|
||||||
DECLARE
|
|
||||||
l_tab DBMS_UTILITY.uncl_array;
|
|
||||||
l_tablen number;
|
|
||||||
BEGIN
|
|
||||||
dbms_utility.comma_to_table('CONTACT,PROFILE,ROLE,USERROLE,STAFF,ZIP,ADDRESS,DOCUMENT,PLAN,EXHIBIT,SUBSCRIPTION,AUTHORIZATION,INVENTORY,ORDER_ITEMS,INVOICE,TASK_HISTORY'
|
|
||||||
, l_tablen, l_tab);
|
|
||||||
for i in 1..l_tablen
|
|
||||||
LOOP
|
|
||||||
BEGIN
|
|
||||||
EXECUTE IMMEDIATE 'DROP TABLE ' || l_tab(i) || ' CASCADE CONSTRAINTS';
|
|
||||||
DBMS_OUTPUT.put_line('DROPPED ' || l_tab(i) );
|
|
||||||
EXCEPTION
|
|
||||||
WHEN OTHERS THEN NULL;
|
|
||||||
END;
|
|
||||||
END LOOP;
|
|
||||||
|
|
||||||
DBMS_UTILITY.comma_to_table('ISEQ_CONTACT,ISEQ_ROLE,ISEQ_PROFILE,ISEQ_DOCUMENT', l_tablen, l_tab);
|
|
||||||
for i in 1..l_tablen
|
|
||||||
LOOP
|
|
||||||
BEGIN
|
|
||||||
EXECUTE IMMEDIATE 'DROP SEQUENCE '|| l_tab(i);
|
|
||||||
DBMS_OUTPUT.put_line('DROPPED ' || l_tab(i) );
|
|
||||||
EXCEPTION
|
|
||||||
WHEN OTHERS THEN NULL;
|
|
||||||
END;
|
|
||||||
END LOOP;
|
|
||||||
|
|
||||||
COMMIT;
|
|
||||||
END;
|
|
||||||
/
|
|
||||||
|
|
||||||
CREATE SEQUENCE ISEQ_CONTACT START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
|
|
||||||
|
|
||||||
CREATE TABLE CONTACT (
|
|
||||||
CONTACT_ID NUMBER DEFAULT ISEQ_CONTACT.nextval NOT NULL,
|
|
||||||
FIRST_NAME VARCHAR2(16) NOT NULL,
|
|
||||||
LAST_NAME VARCHAR2(16) NOT NULL,
|
|
||||||
PHONE_NO VARCHAR2(12),
|
|
||||||
EMAIL VARCHAR2(64) NOT NULL,
|
|
||||||
MODIFIED_BY NUMBER,
|
|
||||||
CREATED_DT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
MODIFIED_DT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
CONSTRAINT PK_CONTACT_ID PRIMARY KEY (CONTACT_ID),
|
|
||||||
FOREIGN KEY (MODIFIED_BY) REFERENCES CONTACT(CONTACT_ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE ZIP (
|
|
||||||
ZIP VARCHAR2(5),
|
|
||||||
CITY VARCHAR2(16),
|
|
||||||
STATE VARCHAR2(2),
|
|
||||||
CONSTRAINT PK_ZIP PRIMARY KEY (ZIP),
|
|
||||||
CONSTRAINT ZIP_CHECK CHECK ( REGEXP_LIKE(ZIP, '\d{5}') )
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE ADDRESS (
|
|
||||||
ZIP VARCHAR2(5) NOT NULL,
|
|
||||||
FK_CONTACT_ID NUMBER NOT NULL,
|
|
||||||
STREET VARCHAR2(32) NOT NULL,
|
|
||||||
CONSTRAINT PK_ADDRESS PRIMARY KEY (ZIP, FK_CONTACT_ID),
|
|
||||||
FOREIGN KEY (FK_CONTACT_ID) REFERENCES CONTACT(CONTACT_ID) ON DELETE CASCADE,
|
|
||||||
FOREIGN KEY (ZIP) REFERENCES ZIP(ZIP)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE SEQUENCE "ISEQ_ROLE" START WITH 100 INCREMENT BY 100 NOCACHE NOCYCLE;
|
|
||||||
|
|
||||||
CREATE TABLE ROLE (
|
|
||||||
ROLE_ID NUMBER DEFAULT ISEQ_ROLE.nextval NOT NULL,
|
|
||||||
ROLENAME VARCHAR2(16),
|
|
||||||
CONSTRAINT PK_ROLE_ID PRIMARY KEY (ROLE_ID),
|
|
||||||
CONSTRAINT check_role CHECK (ROLENAME IN ('SYSTEM', 'CONTACT', 'CUSTOMER', 'STAFF', 'SUPPLIER'))
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE SEQUENCE "ISEQ_PROFILE" START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
|
|
||||||
|
|
||||||
CREATE TABLE PROFILE (
|
|
||||||
PROFILE_ID NUMBER DEFAULT ISEQ_PROFILE.nextval NOT NULL,
|
|
||||||
FK_CONTACT_ID NUMBER NOT NULL,
|
|
||||||
ACTIVE BOOLEAN DEFAULT FALSE,
|
|
||||||
MODIFIED_BY NUMBER NOT NULL,
|
|
||||||
CREATED_DT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
MODIFIED_DT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
CONSTRAINT PK_PROFILE_ID PRIMARY KEY(PROFILE_ID),
|
|
||||||
FOREIGN KEY (FK_CONTACT_ID) REFERENCES CONTACT(CONTACT_ID) ON DELETE CASCADE,
|
|
||||||
FOREIGN KEY(MODIFIED_BY) REFERENCES PROFILE(PROFILE_ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE USERROLE (
|
|
||||||
FK_PROFILE_ID NUMBER NOT NULL,
|
|
||||||
FK_ROLE_ID NUMBER NOT NULL,
|
|
||||||
PASSWORDHASH RAW(256) DEFAULT NULL,
|
|
||||||
CONSTRAINT PK_USERROLE PRIMARY KEY (FK_ROLE_ID,FK_PROFILE_ID),
|
|
||||||
FOREIGN KEY(FK_PROFILE_ID) REFERENCES PROFILE(PROFILE_ID) ON DELETE CASCADE,
|
|
||||||
FOREIGN KEY(FK_ROLE_ID) REFERENCES ROLE(ROLE_ID) ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE STAFF(
|
|
||||||
FK_PROFILE_ID NUMBER NOT NULL,
|
|
||||||
POSITION VARCHAR2(14) NOT NULL,
|
|
||||||
CONSTRAINT check_position CHECK (POSITION IN ('Director', 'Curator',
|
|
||||||
'Art Handler', 'Registrar', 'Associate')),
|
|
||||||
CONSTRAINT PK_STAFF PRIMARY KEY (FK_PROFILE_ID),
|
|
||||||
FOREIGN KEY(FK_PROFILE_ID) REFERENCES PROFILE(PROFILE_ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE SEQUENCE ISEQ_DOCUMENT START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
|
|
||||||
CREATE TABLE DOCUMENT (
|
|
||||||
DOCUMENT_ID NUMBER DEFAULT ISEQ_DOCUMENT.nextval NOT NULL,
|
|
||||||
DOCUMENT_URL VARCHAR2(254) NOT NULL,
|
|
||||||
CONSTRAINT PK_DOCUMENT PRIMARY KEY (DOCUMENT_ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE PLAN (
|
|
||||||
PLAN_ID NUMBER GENERATED ALWAYS AS IDENTITY,
|
|
||||||
DESCRIPTION VARCHAR2(32),
|
|
||||||
FK_DOCUMENT_ID NUMBER NOT NULL,
|
|
||||||
Duration NUMBER, --in hours
|
|
||||||
price NUMBER,
|
|
||||||
MODIFIED_BY NUMBER,
|
|
||||||
CREATED_DT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
MODIFIED_DT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
CONSTRAINT PK_PLAN PRIMARY KEY(PLAN_ID),
|
|
||||||
FOREIGN KEY(FK_DOCUMENT_ID) REFERENCES DOCUMENT(DOCUMENT_ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE SUBSCRIPTION (
|
|
||||||
FK_PLAN_ID NUMBER,
|
|
||||||
FK_CONTACT_ID NUMBER,
|
|
||||||
MODIFIED_BY NUMBER,
|
|
||||||
CREATED_DT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
MODIFIED_DT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
CONSTRAINT PK_SUBSCRIPTION PRIMARY KEY (FK_PLAN_ID, FK_CONTACT_ID),
|
|
||||||
FOREIGN KEY(FK_CONTACT_ID) REFERENCES CONTACT(CONTACT_ID),
|
|
||||||
FOREIGN KEY(FK_PLAN_ID) REFERENCES PLAN(PLAN_ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
/* Once invoice is paid, external system inserts invoice uid. Insert/Update.*/
|
|
||||||
CREATE TABLE INVOICE (
|
|
||||||
INVOICE_ID RAW(16) DEFAULT SYS_GUID() NOT NULL PRIMARY KEY,
|
|
||||||
FK_PLAN_ID NUMBER,
|
|
||||||
FK_CONTACT_ID NUMBER,
|
|
||||||
InvoiceDate DATE,
|
|
||||||
AmountPaid DECIMAL(10, 2) DEFAULT 0,
|
|
||||||
FOREIGN KEY(FK_CONTACT_ID) REFERENCES CONTACT(CONTACT_ID),
|
|
||||||
FOREIGN KEY(FK_PLAN_ID) REFERENCES PLAN(PLAN_ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE AUTHORIZATION (
|
|
||||||
AUTHORIZATION_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
||||||
FK_CONTACT_ID NUMBER,
|
|
||||||
AUTHORIZATION_STATUS VARCHAR2(16) NOT NULL,
|
|
||||||
AUTHORIZATION_DATE TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
EXPIRATION_DATE TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
FK_DOCUMENT_ID NUMBER,
|
|
||||||
MODIFIED_BY NUMBER,
|
|
||||||
CREATED_DT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
MODIFIED_DT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
FOREIGN KEY(FK_CONTACT_ID) REFERENCES CONTACT(CONTACT_ID),
|
|
||||||
FOREIGN KEY(FK_DOCUMENT_ID) REFERENCES DOCUMENT(DOCUMENT_ID),
|
|
||||||
CONSTRAINT check_authorization_status CHECK (AUTHORIZATION_STATUS IN ('pending', 'approved', 'rejected', 'expired'))
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE INVENTORY (
|
|
||||||
INVENTORY_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
||||||
FK_CONTACT_ID NUMBER NOT NULL,
|
|
||||||
AUTHORIZATION_ID NUMBER,
|
|
||||||
SKU VARCHAR2(100) NOT NULL,
|
|
||||||
PRODUCT_DESCRIPTION VARCHAR2(100) NOT NULL,
|
|
||||||
UNIT_COST DECIMAL(10,2) NOT NULL,
|
|
||||||
LEAD_TIME_DAYS INTEGER NOT NULL,
|
|
||||||
PRODUCT_NAME VARCHAR2(100) NOT NULL,
|
|
||||||
UNIT_OF_MEASURE VARCHAR2(50) NOT NULL,
|
|
||||||
BASE_PRICE DECIMAL(10,2) NOT NULL,
|
|
||||||
QUANTITY_AVAILABLE INTEGER DEFAULT 0 NOT NULL,
|
|
||||||
CREATED_AT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
UPDATED_AT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
FK_DOCUMENT_ID NUMBER,
|
|
||||||
FOREIGN KEY(FK_CONTACT_ID) REFERENCES CONTACT(CONTACT_ID),
|
|
||||||
FOREIGN KEY(FK_DOCUMENT_ID) REFERENCES DOCUMENT(DOCUMENT_ID),
|
|
||||||
FOREIGN KEY(AUTHORIZATION_ID) REFERENCES AUTHORIZATION(AUTHORIZATION_ID),
|
|
||||||
CONSTRAINT SUPPLIER_UNIQUE_SKU UNIQUE(FK_CONTACT_ID, SKU)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE EXHIBIT (
|
|
||||||
EXHIBIT_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
||||||
FK_INVENTORY_ID NUMBER NOT NULL,
|
|
||||||
FK_PLAN_ID NUMBER,
|
|
||||||
FOREIGN KEY(FK_PLAN_ID) REFERENCES PLAN(PLAN_ID),
|
|
||||||
FOREIGN KEY(FK_INVENTORY_ID) REFERENCES INVENTORY(INVENTORY_ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE ORDER_ITEMS ( -- 'product line items customers placed in their carts.'
|
|
||||||
ORDER_ITEM_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
||||||
FK_PROFILE_ID NUMBER NOT NULL,
|
|
||||||
TRANSACTION_ID VARCHAR2(32) NULL,
|
|
||||||
CREATED_AT TIMESTAMP NOT NULL,
|
|
||||||
QUANTITY NUMBER DEFAULT(1) NOT NULL,
|
|
||||||
UNIT_PRICE DECIMAL(10,2) NOT NULL,
|
|
||||||
LINE_TOTAL DECIMAL(10,2) NOT NULL,
|
|
||||||
FK_INVENTORY_ID NUMBER NOT NULL,
|
|
||||||
FOREIGN KEY(FK_PROFILE_ID) REFERENCES PROFILE(PROFILE_ID),
|
|
||||||
FOREIGN KEY(FK_INVENTORY_ID) REFERENCES INVENTORY(INVENTORY_ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE TASK_HISTORY(
|
|
||||||
TASK_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
||||||
ASSIGNED_TO_PROFILE_ID NUMBER NOT NULL,
|
|
||||||
CREATED_BY_PROFILE_ID NUMBER NOT NULL,
|
|
||||||
RELATED_ENTITY_TYPE VARCHAR2(32), -- 'order', 'supplier', etc.
|
|
||||||
RELATED_ENTITY_ID NUMBER,
|
|
||||||
TASK_TYPE VARCHAR2(32) NOT NULL,
|
|
||||||
TASK_TITLE VARCHAR2(64) NOT NULL,
|
|
||||||
DESCRIPTION VARCHAR2(128),
|
|
||||||
FK_DOCUMENT_ID NUMBER,
|
|
||||||
STATUS VARCHAR2(16) DEFAULT 'pending',
|
|
||||||
DUE_DATE TIMESTAMP,
|
|
||||||
COMPLETED_AT TIMESTAMP,
|
|
||||||
CREATED_AT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
UPDATED_AT TIMESTAMP DEFAULT SYSDATE,
|
|
||||||
FOREIGN KEY(FK_DOCUMENT_ID) REFERENCES DOCUMENT(DOCUMENT_ID),
|
|
||||||
CONSTRAINT chk_status CHECK (STATUS IN ('pending', 'in_progress', 'completed', 'cancelled'))
|
|
||||||
);
|
|
||||||
|
|
||||||
/* VIEW of available exhibit inventory */
|
|
||||||
CREATE OR REPLACE VIEW VIEW_AVAILABLE_INVENTORY AS
|
|
||||||
SELECT
|
|
||||||
INVENTORY_ID,FK_CONTACT_ID,AUTHORIZATION_ID,SKU,PRODUCT_DESCRIPTION,UNIT_COST,LEAD_TIME_DAYS,
|
|
||||||
PRODUCT_NAME,UNIT_OF_MEASURE,BASE_PRICE,QUANTITY_AVAILABLE,CREATED_AT,UPDATED_AT,FK_DOCUMENT_ID
|
|
||||||
FROM
|
|
||||||
INVENTORY WHERE QUANTITY_AVAILABLE > 0
|
|
||||||
INTERSECT
|
|
||||||
SELECT
|
|
||||||
FK_INVENTORY_ID, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
|
|
||||||
FROM
|
|
||||||
EXHIBIT;
|
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW VIEW_SYSTEMROLE AS
|
|
||||||
SELECT u.FK_PROFILE_ID, p.FK_CONTACT_ID, r.ROLENAME, p.ACTIVE FROM
|
|
||||||
USERROLE u
|
|
||||||
JOIN PROFILE p ON p.PROFILE_ID=u.FK_PROFILE_ID
|
|
||||||
JOIN ROLE r ON r.ROLE_ID = u.FK_ROLE_ID AND r.ROLE_ID = 100;
|
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW VIEW_STAFF AS
|
|
||||||
SELECT u.FK_PROFILE_ID, p.FK_CONTACT_ID, r.ROLENAME, p.ACTIVE, c.FIRST_NAME, c.LAST_NAME, s.POSITION FROM
|
|
||||||
USERROLE u
|
|
||||||
JOIN PROFILE p ON p.PROFILE_ID=u.FK_PROFILE_ID
|
|
||||||
JOIN CONTACT c ON c.CONTACT_ID = p.FK_CONTACT_ID
|
|
||||||
JOIN ROLE r ON r.ROLE_ID = u.FK_ROLE_ID AND r.ROLE_ID = 300
|
|
||||||
JOIN STAFF s on s.FK_PROFILE_ID = p.PROFILE_ID;
|
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW VIEW_SUPPLIER AS
|
|
||||||
SELECT u.FK_PROFILE_ID, p.FK_CONTACT_ID, r.ROLENAME, p.ACTIVE, c.FIRST_NAME, c.LAST_NAME FROM
|
|
||||||
USERROLE u
|
|
||||||
JOIN PROFILE p ON p.PROFILE_ID=u.FK_PROFILE_ID
|
|
||||||
JOIN CONTACT c ON c.CONTACT_ID = p.FK_CONTACT_ID
|
|
||||||
JOIN ROLE r ON r.ROLE_ID = u.FK_ROLE_ID AND r.ROLE_ID = 200;
|
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW VIEW_CUSTOMER AS
|
|
||||||
SELECT u.FK_PROFILE_ID, p.FK_CONTACT_ID, r.ROLENAME, p.ACTIVE, c.FIRST_NAME, c.LAST_NAME FROM
|
|
||||||
USERROLE u
|
|
||||||
JOIN PROFILE p ON p.PROFILE_ID=u.FK_PROFILE_ID
|
|
||||||
JOIN CONTACT c ON c.CONTACT_ID = p.FK_CONTACT_ID
|
|
||||||
JOIN ROLE r ON r.ROLE_ID = u.FK_ROLE_ID AND r.ROLE_ID = 400;
|
|
||||||
|
|
||||||
-- Trigger customer ordered items reservation
|
|
||||||
CREATE OR REPLACE TRIGGER ORDER_ITEMS_reserved
|
|
||||||
AFTER INSERT ON ORDER_ITEMS FOR EACH ROW
|
|
||||||
BEGIN
|
|
||||||
UPDATE INVENTORY SET QUANTITY_AVAILABLE = QUANTITY_AVAILABLE - :NEW.QUANTITY WHERE INVENTORY_ID= :NEW.FK_INVENTORY_ID;
|
|
||||||
DBMS_OUTPUT.put_line(' ORDER transaction. ' );
|
|
||||||
END;
|
|
||||||
/
|
|
||||||
|
|
||||||
-- Trigger Paid Invoice, generates subscription
|
|
||||||
CREATE OR REPLACE TRIGGER INVOICE_paid_subscription
|
|
||||||
AFTER INSERT OR UPDATE ON INVOICE FOR EACH ROW
|
|
||||||
BEGIN
|
|
||||||
DBMS_OUTPUT.put_line(' SUBSCRIPTION transaction. ' );
|
|
||||||
INSERT INTO SUBSCRIPTION (FK_PLAN_ID, FK_CONTACT_ID) VALUES (:NEW.FK_PLAN_ID, :NEW.FK_CONTACT_ID);
|
|
||||||
EXCEPTION
|
|
||||||
WHEN DUP_VAL_ON_INDEX THEN
|
|
||||||
DBMS_OUTPUT.put_line('Subscription exists for plan and contact. No new subscription created.');
|
|
||||||
UPDATE SUBSCRIPTION SET FK_PLAN_ID = :NEW.FK_PLAN_ID, FK_CONTACT_ID = :NEW.FK_CONTACT_ID, MODIFIED_BY = 1, MODIFIED_DT = SYSDATE
|
|
||||||
WHERE FK_PLAN_ID = :NEW.FK_PLAN_ID AND FK_CONTACT_ID = :NEW.FK_CONTACT_ID;
|
|
||||||
WHEN OTHERS THEN
|
|
||||||
DBMS_OUTPUT.put_line('Error in INVOICE_paid_subscription creating/updating subscription: ' || SQLERRM);
|
|
||||||
END;
|
|
||||||
/
|
|
||||||
|
|
||||||
CREATE OR REPLACE PROCEDURE sp_auth_supplier(
|
|
||||||
p_status IN VARCHAR,
|
|
||||||
p_supplier IN NUMBER,
|
|
||||||
p_document_url IN VARCHAR
|
|
||||||
) IS
|
|
||||||
l_id NUMBER;
|
|
||||||
BEGIN
|
|
||||||
BEGIN
|
|
||||||
INSERT INTO DOCUMENT(DOCUMENT_ID, DOCUMENT_URL) VALUES (ISEQ_DOCUMENT.nextval, p_document_url)
|
|
||||||
RETURNING DOCUMENT_ID INTO l_id; -- Captures the generated ID
|
|
||||||
END;
|
|
||||||
BEGIN
|
|
||||||
INSERT INTO AUTHORIZATION (AUTHORIZATION_STATUS, FK_CONTACT_ID, MODIFIED_BY, FK_DOCUMENT_ID) VALUES(p_status, p_supplier, 1, l_id);
|
|
||||||
DBMS_OUTPUT.put_line('Reviewed Document ' || p_status );
|
|
||||||
EXCEPTION
|
|
||||||
WHEN OTHERS
|
|
||||||
THEN
|
|
||||||
DBMS_OUTPUT.put_line (SQLERRM);
|
|
||||||
raise_application_error (-20500, 'failed while setting auth_supplier_status. ');
|
|
||||||
END;
|
|
||||||
END;
|
|
||||||
|
|
||||||
/
|
|
||||||
|
|
||||||
INSERT INTO ROLE (ROLE_ID, ROLENAME) VALUES (100, 'SYSTEM');
|
|
||||||
INSERT INTO ROLE (ROLE_ID, ROLENAME) VALUES (200, 'SUPPLIER');
|
|
||||||
INSERT INTO ROLE (ROLE_ID, ROLENAME) VALUES (300, 'STAFF');
|
|
||||||
INSERT INTO ROLE (ROLE_ID, ROLENAME) VALUES (400, 'CUSTOMER');
|
|
||||||
|
|
||||||
-- SYSTEM ROLE
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('ART', 'SYSTEM', '000-1234', 'arts@art.com', 1);
|
|
||||||
-- STAFF ROLE
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Alice', 'Johnson', '650-555-9012', 'alice.johnson@art.com', 1);
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ( 'Karen', 'Park', '206-555-0110', 'karen.park@art.com', 1);
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ( 'Jeese', 'Taylor', '713-555-0106', 'grace.taylor@art.com', 1);
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ( 'James', 'Lee', '206-555-0109', 'james.lee@art.com', 1);
|
|
||||||
-- SUPPLIER ROLE
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Stephen', 'Alec', '424-546-9312', 'salec@eizel.com', 1);
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Henry', 'Martinez', '602-555-0107', 'henry@artsupply.com', 1);
|
|
||||||
-- CUSTOMER ROLE
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Carol', 'White', '212-555-0102', 'carol.white@mail.com', 1);
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Bob', 'Smith', '212-555-0101', 'bob.smith@mail.com', 1);
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('David', 'Brown', '312-555-0103', 'david.brown@mail.com', 1);
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Emma', 'Davis', '312-555-0104', 'emma.davis@mail.com', 1);
|
|
||||||
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Frank', 'Wilson', '713-555-0105', 'frank.wilson@mail.com', 1);
|
|
||||||
|
|
||||||
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('10001', 'New York', 'NY');
|
|
||||||
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('90210', 'Beverly Hills', 'CA');
|
|
||||||
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('94027', 'Atherton', 'CA');
|
|
||||||
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('90211', 'Los Angeles', 'CA');
|
|
||||||
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('60601', 'Chicago', 'IL');
|
|
||||||
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('77001', 'Houston', 'TX');
|
|
||||||
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('85001', 'Phoenix', 'AZ');
|
|
||||||
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('98101', 'Seattle', 'WA');
|
|
||||||
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('02101', 'Boston', 'MA');
|
|
||||||
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('33101', 'Miami', 'FL');
|
|
||||||
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (1, '789 Oak St, suite 10', '94027');
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (2, '789 Oak St, suite 15', '94027');
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (3, '789 Oak St, suite 1', '94027');
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (4, '789 Oak St, suite 5', '94027');
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (5, '789 Oak St, suite 15', '94027');
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (6, '890 Venue Rd', '90210');
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (7, '200 Sunset Blvd', '90210');
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (8, '100 Broadway', '10001');
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (9, '300 Michigan Ave', '60601');
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (10, '400 Main St', '77001');
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP ) VALUES (11, '500 Central Ave', '85001');
|
|
||||||
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP ) VALUES (12, '600 Pike St', '98101');
|
|
||||||
|
|
||||||
-- SYSTEMPROFILE
|
|
||||||
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (1, TRUE, 1);
|
|
||||||
-- STAFF PROFILE
|
|
||||||
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (2, TRUE, 2);
|
|
||||||
-- SUPPLIER
|
|
||||||
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (3, TRUE, 3);
|
|
||||||
|
|
||||||
INSERT INTO PROFILE (PROFILE_ID, FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (4, 4, TRUE, 1);
|
|
||||||
INSERT INTO PROFILE (PROFILE_ID, FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (5, 5, TRUE, 1);
|
|
||||||
INSERT INTO PROFILE (PROFILE_ID, FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (6, 6, TRUE, 1);
|
|
||||||
INSERT INTO PROFILE (PROFILE_ID, FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (7, 7, TRUE, 1);
|
|
||||||
INSERT INTO PROFILE (PROFILE_ID, FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (8, 8, FALSE, 1); -- inactive
|
|
||||||
INSERT INTO PROFILE (PROFILE_ID, FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (9, 9, TRUE, 1);
|
|
||||||
INSERT INTO PROFILE (PROFILE_ID, FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (10, 10, TRUE, 1);
|
|
||||||
INSERT INTO PROFILE (PROFILE_ID, FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (11, 11, TRUE, 1);
|
|
||||||
INSERT INTO PROFILE (PROFILE_ID, FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (12, 12, TRUE, 1);
|
|
||||||
|
|
||||||
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID, PASSWORDHASH) VALUES (1, 100, NULL);
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID) VALUES (2, 300);
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID) VALUES (3, 300);
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID) VALUES (4, 300);
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID) VALUES (5, 300);
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID) VALUES (6, 200);
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID) VALUES (7, 200);
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID) VALUES (8, 400); -- inactive customer
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID) VALUES (9, 400);
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID) VALUES (10, 400);
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID) VALUES (11, 400);
|
|
||||||
INSERT INTO USERROLE (FK_PROFILE_ID, FK_ROLE_ID) VALUES (12, 400);
|
|
||||||
|
|
||||||
INSERT INTO STAFF (FK_PROFILE_ID, POSITION) VALUES (2, 'Director');
|
|
||||||
INSERT INTO STAFF (FK_PROFILE_ID, POSITION) VALUES (3, 'Registrar');
|
|
||||||
INSERT INTO STAFF (FK_PROFILE_ID, POSITION) VALUES (4, 'Curator');
|
|
||||||
INSERT INTO STAFF (FK_PROFILE_ID, POSITION) VALUES (5, 'Art Handler');
|
|
||||||
|
|
||||||
INSERT INTO DOCUMENT (DOCUMENT_ID, DOCUMENT_URL) VALUES (2, 'https://art.com/docs/consignment-stephen-crimson-horizon.pdf');
|
|
||||||
INSERT INTO DOCUMENT (DOCUMENT_ID, DOCUMENT_URL) VALUES (3, 'https://art.com/docs/consignment-stephen-misty-valley.pdf');
|
|
||||||
INSERT INTO DOCUMENT (DOCUMENT_ID, DOCUMENT_URL) VALUES (4, 'https://art.com/docs/consignment-stephen-twisted-form.pdf');
|
|
||||||
INSERT INTO DOCUMENT (DOCUMENT_ID, DOCUMENT_URL) VALUES (5, 'https://art.com/docs/consignment-stephen-blue-symmetry.pdf');
|
|
||||||
INSERT INTO DOCUMENT (DOCUMENT_ID, DOCUMENT_URL) VALUES (6, 'https://art.com/docs/consignment-henry-urban-solitude.pdf');
|
|
||||||
INSERT INTO DOCUMENT (DOCUMENT_ID, DOCUMENT_URL) VALUES (7, 'https://art.com/docs/consignment-henry-earth-vessel.pdf');
|
|
||||||
INSERT INTO DOCUMENT (DOCUMENT_ID, DOCUMENT_URL) VALUES (8, 'https://art.com/docs/consignment-henry-quiet-reflection.pdf');
|
|
||||||
|
|
||||||
-- Stephen — approved
|
|
||||||
INSERT INTO AUTHORIZATION (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
|
||||||
VALUES ('approved', 6, 2, 1, SYSDATE, SYSDATE + 365);
|
|
||||||
-- Stephen — approved
|
|
||||||
INSERT INTO AUTHORIZATION (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
|
||||||
VALUES ('approved', 6, 3, 1, SYSDATE, SYSDATE + 365);
|
|
||||||
-- Stephen — pending ('pending' status path)
|
|
||||||
INSERT INTO AUTHORIZATION (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
|
||||||
VALUES ('pending', 6, 4, 1, SYSDATE, SYSDATE + 365);
|
|
||||||
-- Stephen — rejected ('rejected' status path)
|
|
||||||
INSERT INTO AUTHORIZATION (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
|
||||||
VALUES ('rejected', 6, 5, 1, SYSDATE, SYSDATE + 30);
|
|
||||||
-- Henry — approved
|
|
||||||
INSERT INTO AUTHORIZATION (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
|
||||||
VALUES ('approved', 7, 6, 1, SYSDATE, SYSDATE + 365);
|
|
||||||
-- Henry — approved
|
|
||||||
INSERT INTO AUTHORIZATION (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
|
||||||
VALUES ('approved', 7, 7, 1, SYSDATE, SYSDATE + 365);
|
|
||||||
-- Henry — approved
|
|
||||||
INSERT INTO AUTHORIZATION (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
|
||||||
VALUES ('approved', 7, 8, 1, SYSDATE, SYSDATE + 365);
|
|
||||||
-- Henry — pending
|
|
||||||
INSERT INTO AUTHORIZATION (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
|
||||||
VALUES ('pending', 7, 7, 1, SYSDATE, SYSDATE + 180);
|
|
||||||
-- Henry — expired (EXPIRATION_DATE in the past)
|
|
||||||
INSERT INTO AUTHORIZATION (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
|
||||||
VALUES ('expired', 7, 8, 1, SYSDATE - 365, SYSDATE - 30);
|
|
||||||
|
|
||||||
-- PLAN Documents for exhibition
|
|
||||||
INSERT INTO DOCUMENT (DOCUMENT_ID, DOCUMENT_URL) VALUES (9, 'https://art.com/docs/plan-spring-gala-2025.pdf');
|
|
||||||
INSERT INTO DOCUMENT (DOCUMENT_ID, DOCUMENT_URL) VALUES (10, 'https://art.com/docs/plan-summer-exhibit-2025.pdf');
|
|
||||||
INSERT INTO DOCUMENT (DOCUMENT_ID, DOCUMENT_URL) VALUES (11, 'https://art.com/docs/plan-fall-exhibition-2025.pdf');
|
|
||||||
|
|
||||||
-- PLANS
|
|
||||||
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Spring Gala Preview', 9, 4, 75.00, 1); -- PLAN_ID 1
|
|
||||||
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Spring Gala Standard', 9, 8, 120.00, 1); -- PLAN_ID 2
|
|
||||||
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Spring Gala VIP', 9, 12, 250.00, 1); -- PLAN_ID 3
|
|
||||||
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Summer Exhibit Basic', 10, 4, 50.00, 1); -- PLAN_ID 4
|
|
||||||
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Summer Exhibit Plus', 10, 8, 100.00, 1); -- PLAN_ID 5
|
|
||||||
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Summer Exhibit Premium', 10, 16, 200.00, 1); -- PLAN_ID 6
|
|
||||||
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Fall Exhibition Access', 11, 4, 60.00, 1); -- PLAN_ID 7
|
|
||||||
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Fall Exhibition Full Day',11, 8, 110.00, 1); -- PLAN_ID 8
|
|
||||||
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Fall Exhibition Weekend', 11, 24, 180.00, 1); -- PLAN_ID 9
|
|
||||||
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Annual Patron Pass', 11, 200, 500.00, 1); -- PLAN_ID 10
|
|
||||||
|
|
||||||
-- IV 1 — Crimson Horizon
|
|
||||||
INSERT INTO INVENTORY (FK_CONTACT_ID, AUTHORIZATION_ID, SKU, PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
|
||||||
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
|
||||||
VALUES (6, 1, 'ART-S-001',
|
|
||||||
'Oil on canvas, abstract expressionism, 24x36', 800.00, 7,
|
|
||||||
'Crimson Horizon', 'piece', 1200.00, 5, 2);
|
|
||||||
|
|
||||||
-- IV 2 — Misty Valley
|
|
||||||
INSERT INTO INVENTORY (FK_CONTACT_ID, AUTHORIZATION_ID, SKU,
|
|
||||||
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
|
||||||
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
|
||||||
VALUES (6, 2, 'ART-S-002',
|
|
||||||
'Watercolor on paper, landscape, 18x24', 450.00, 5,
|
|
||||||
'Misty Valley', 'piece', 700.00, 5, 3);
|
|
||||||
|
|
||||||
-- IV 3 — Twisted Form
|
|
||||||
INSERT INTO INVENTORY (FK_CONTACT_ID, AUTHORIZATION_ID, SKU,
|
|
||||||
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
|
||||||
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
|
||||||
VALUES (6, 3, 'ART-S-003',
|
|
||||||
'Bronze sculpture, abstract, 12 in height', 1500.00, 14,
|
|
||||||
'Twisted Form', 'piece', 2200.00, 5, 4);
|
|
||||||
|
|
||||||
-- IV 4 — Blue Symmetry
|
|
||||||
INSERT INTO INVENTORY (FK_CONTACT_ID, AUTHORIZATION_ID, SKU,
|
|
||||||
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
|
||||||
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
|
||||||
VALUES (7, 1, 'ART-S-004',
|
|
||||||
'Acrylic on canvas, geometric, 30x30', 600.00, 7,
|
|
||||||
'Blue Symmetry', 'piece', 950.00, 5, 2);
|
|
||||||
|
|
||||||
-- IV 5 — Urban Collage
|
|
||||||
INSERT INTO INVENTORY (FK_CONTACT_ID, AUTHORIZATION_ID, SKU,
|
|
||||||
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
|
||||||
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
|
||||||
VALUES (7, 2, 'ART-S-005',
|
|
||||||
'Mixed media on board, 20x20', 350.00, 5,
|
|
||||||
'Urban Collage', 'piece', 550.00, 6, 3);
|
|
||||||
|
|
||||||
-- IV 6 — Urban Solitude
|
|
||||||
INSERT INTO INVENTORY (FK_CONTACT_ID, AUTHORIZATION_ID, SKU,
|
|
||||||
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
|
||||||
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
|
||||||
VALUES (6, 6, 'ART-H-001',
|
|
||||||
'Photography print, archival, limited ed 1/10', 900.00, 3,
|
|
||||||
'Urban Solitude', 'piece', 1500.00, 10, 6);
|
|
||||||
|
|
||||||
-- IV 7 — Earth Vessel
|
|
||||||
INSERT INTO INVENTORY (FK_CONTACT_ID, AUTHORIZATION_ID, SKU,
|
|
||||||
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
|
||||||
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
|
||||||
VALUES (7, 7, 'ART-H-002',
|
|
||||||
'Ceramic vessel, hand-thrown and glazed', 250.00, 10,
|
|
||||||
'Earth Vessel', 'piece', 420.00, 8, 7);
|
|
||||||
|
|
||||||
-- IV 8 — Quiet Reflection
|
|
||||||
INSERT INTO INVENTORY (FK_CONTACT_ID, AUTHORIZATION_ID, SKU,
|
|
||||||
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
|
||||||
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
|
||||||
VALUES (7, 8, 'ART-H-003',
|
|
||||||
'Pastel drawing, portrait, 16x20', 300.00, 7,
|
|
||||||
'Quiet Reflection','piece', 500.00, 4, 8);
|
|
||||||
|
|
||||||
-- IV 9 — Neon Dreams
|
|
||||||
INSERT INTO INVENTORY (FK_CONTACT_ID, AUTHORIZATION_ID, SKU,
|
|
||||||
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
|
||||||
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
|
||||||
VALUES (6, 6, 'ART-H-004',
|
|
||||||
'Digital print on aluminum, 24x36', 700.00, 5,
|
|
||||||
'Neon Dreams', 'piece', 1100.00, 6, 6);
|
|
||||||
|
|
||||||
-- IV 10 — Woven Stories
|
|
||||||
INSERT INTO INVENTORY (FK_CONTACT_ID, AUTHORIZATION_ID, SKU,
|
|
||||||
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
|
||||||
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
|
||||||
VALUES (6, 7, 'ART-H-005',
|
|
||||||
'Textile wall hanging, woven, 36x48', 550.00, 14,
|
|
||||||
'Woven Stories', 'piece', 850.00, 5, 7);
|
|
||||||
|
|
||||||
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (1, 1); -- Crimson Horizon → Spring Preview
|
|
||||||
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (2, 2); -- Misty Valley → Spring Standard
|
|
||||||
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (3, 3); -- Twisted Form → Spring VIP
|
|
||||||
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (4, 4); -- Blue Symmetry → Summer Basic
|
|
||||||
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (5, 5); -- Urban Collage → Summer Plus
|
|
||||||
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (6, 6); -- Urban Solitude → Summer Premium
|
|
||||||
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (7, 7); -- Earth Vessel → Fall Access
|
|
||||||
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (8, 8); -- Quiet Reflection → Fall Full Day
|
|
||||||
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (9, 9); -- Neon Dreams → Fall Weekend
|
|
||||||
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (10, 10); -- Woven Stories → Annual Pass
|
|
||||||
|
|
||||||
|
|
||||||
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (9, 1, DATE'2025-01-01', 75.00); -- Bob — Spring Preview
|
|
||||||
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (10, 2, DATE'2025-01-02', 120.00); -- Carol — Spring Standard
|
|
||||||
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (11, 3, DATE'2025-01-03', 250.00); -- David — Spring VIP
|
|
||||||
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (12, 4, DATE'2025-01-04', 50.00); -- Emma — Summer Basic
|
|
||||||
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (9, 5, DATE'2025-01-05', 100.00); -- Bob — Summer Plus
|
|
||||||
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (10, 6, DATE'2025-01-06', 150.00); -- Carol — Summer Premium
|
|
||||||
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (11, 7, DATE'2025-01-07', 60.00); -- David — Fall Access
|
|
||||||
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (12, 8, DATE'2025-01-08', 110.00); -- Emma — Fall Full Day
|
|
||||||
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (9, 9, DATE'2025-01-09', 180.00); -- Bob — Fall Weekend
|
|
||||||
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (10, 10, DATE'2025-01-10', 500.00); -- Carol — Annual Pass
|
|
||||||
|
|
||||||
/
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,435 +0,0 @@
|
|||||||
SQL> -- ORACLE SQL DML: SCHEMA C##ART
|
|
||||||
SQL> SET ECHO ON;
|
|
||||||
SQL> SET SERVEROUTPUT ON;
|
|
||||||
SQL> SET PAGESIZE 30;
|
|
||||||
SQL> SET HEADING ON;
|
|
||||||
SQL>
|
|
||||||
SQL> -- 20 Queries
|
|
||||||
SQL> -- Q1: Select all columns and all rows from one table
|
|
||||||
SQL> SELECT * FROM ROLE;
|
|
||||||
|
|
||||||
ROLE_ID ROLENAME
|
|
||||||
---------- ----------------
|
|
||||||
100 SYSTEM
|
|
||||||
200 SUPPLIER
|
|
||||||
300 STAFF
|
|
||||||
400 CUSTOMER
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q2: Select five columns and all rows from one table
|
|
||||||
SQL> SELECT CONTACT_ID, FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL FROM CONTACT;
|
|
||||||
|
|
||||||
CONTACT_ID FIRST_NAME LAST_NAME PHONE_NO EMAIL
|
|
||||||
---------- ---------------- ---------------- ------------ ----------------------------------------------------------------
|
|
||||||
1 ART SYSTEM 000-1234 arts@art.com
|
|
||||||
2 Alice Johnson 650-555-9012 alice.johnson@art.com
|
|
||||||
3 Karen Park 206-555-0110 karen.park@art.com
|
|
||||||
4 Jeese Taylor 713-555-0106 grace.taylor@art.com
|
|
||||||
5 James Lee 206-555-0109 james.lee@art.com
|
|
||||||
6 Stephen Alec 424-546-9312 salec@eizel.com
|
|
||||||
7 Henry Martinez 602-555-0107 henry@artsupply.com
|
|
||||||
8 Carol White 212-555-0102 carol.white@mail.com
|
|
||||||
9 Bob Smith 212-555-0101 bob.smith@mail.com
|
|
||||||
10 David Brown 312-555-0103 david.brown@mail.com
|
|
||||||
11 Emma Davis 312-555-0104 emma.davis@mail.com
|
|
||||||
12 Frank Wilson 713-555-0105 frank.wilson@mail.com
|
|
||||||
|
|
||||||
12 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q3: Select all columns from all rows from one view
|
|
||||||
SQL> SELECT * FROM VIEW_AVAILABLE_INVENTORY;
|
|
||||||
no rows selected
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q4: Using a join on 2 tables, select all columns and all rows from the tables without the use of a Cartesian product
|
|
||||||
SQL> SELECT * FROM CONTACT ct
|
|
||||||
2 JOIN ADDRESS ad ON ad.FK_CONTACT_ID=ct.CONTACT_ID;
|
|
||||||
|
|
||||||
CONTACT_ID FIRST_NAME LAST_NAME PHONE_NO EMAIL MODIFIED_BY CREATED_DT MODIFIED_DT ZIP FK_CONTACT_ID STREET
|
|
||||||
---------- ---------------- ---------------- ------------ ---------------------------------------------------------------- ----------- ------------------------------- ------------------------------- ----- ------------- --------------------------------
|
|
||||||
1 ART SYSTEM 000-1234 arts@art.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 94027 1 789 Oak St, suite 10
|
|
||||||
2 Alice Johnson 650-555-9012 alice.johnson@art.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 94027 2 789 Oak St, suite 15
|
|
||||||
3 Karen Park 206-555-0110 karen.park@art.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 94027 3 789 Oak St, suite 1
|
|
||||||
4 Jeese Taylor 713-555-0106 grace.taylor@art.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 94027 4 789 Oak St, suite 5
|
|
||||||
5 James Lee 206-555-0109 james.lee@art.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 94027 5 789 Oak St, suite 15
|
|
||||||
6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 90210 6 890 Venue Rd
|
|
||||||
7 Henry Martinez 602-555-0107 henry@artsupply.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 90210 7 200 Sunset Blvd
|
|
||||||
8 Carol White 212-555-0102 carol.white@mail.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 10001 8 100 Broadway
|
|
||||||
9 Bob Smith 212-555-0101 bob.smith@mail.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 60601 9 300 Michigan Ave
|
|
||||||
10 David Brown 312-555-0103 david.brown@mail.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 77001 10 400 Main St
|
|
||||||
11 Emma Davis 312-555-0104 emma.davis@mail.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 85001 11 500 Central Ave
|
|
||||||
12 Frank Wilson 713-555-0105 frank.wilson@mail.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 98101 12 600 Pike St
|
|
||||||
|
|
||||||
12 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q5: 5: Select and order data retrieved from one table
|
|
||||||
SQL> SELECT * FROM ZIP ORDER BY 1;
|
|
||||||
|
|
||||||
ZIP CITY ST
|
|
||||||
----- ---------------- --
|
|
||||||
02101 Boston MA
|
|
||||||
10001 New York NY
|
|
||||||
33101 Miami FL
|
|
||||||
60601 Chicago IL
|
|
||||||
77001 Houston TX
|
|
||||||
85001 Phoenix AZ
|
|
||||||
90210 Beverly Hills CA
|
|
||||||
90211 Los Angeles CA
|
|
||||||
94027 Atherton CA
|
|
||||||
98101 Seattle WA
|
|
||||||
|
|
||||||
10 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q6: Using a join on 3 tables, select 5 columns from the 3 tables. Use syntax that would limit the output to 10 rows
|
|
||||||
SQL> SELECT iv.SKU, iv.PRODUCT_NAME,iv.BASE_PRICE,iv.LEAD_TIME_DAYS, iv.QUANTITY_AVAILABLE,
|
|
||||||
2 au.AUTHORIZATION_STATUS, au.EXPIRATION_DATE, au.AUTHORIZATION_DATE, c.*, au.FK_DOCUMENT_ID
|
|
||||||
3 FROM INVENTORY iv
|
|
||||||
4 JOIN "AUTHORIZATION" au ON au.AUTHORIZATION_ID = iv.AUTHORIZATION_ID
|
|
||||||
5 join CONTACT c ON c.CONTACT_ID= iv.FK_CONTACT_ID
|
|
||||||
6 FETCH FIRST 10 ROWS ONLY;
|
|
||||||
|
|
||||||
SKU PRODUCT_NAME BASE_PRICE LEAD_TIME_DAYS QUANTITY_AVAILABLE AUTHORIZATION_ST EXPIRATION_DATE AUTHORIZATION_DATE CONTACT_ID FIRST_NAME LAST_NAME PHONE_NO EMAIL MODIFIED_BY CREATED_DT MODIFIED_DT FK_DOCUMENT_ID
|
|
||||||
---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- ---------- -------------- ------------------ ---------------- ------------------------------- ------------------------------- ---------- ---------------- ---------------- ------------ ---------------------------------------------------------------- ----------- ------------------------------- ------------------------------- --------------
|
|
||||||
ART-S-001 Crimson Horizon 1200 7 5 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 2
|
|
||||||
ART-S-002 Misty Valley 700 5 5 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 3
|
|
||||||
ART-S-003 Twisted Form 2200 14 5 pending 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 4
|
|
||||||
ART-H-001 Urban Solitude 1500 3 10 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7
|
|
||||||
ART-H-004 Neon Dreams 1100 5 6 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7
|
|
||||||
ART-H-005 Woven Stories 850 14 5 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 Stephen Alec 424-546-9312 salec@eizel.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 8
|
|
||||||
ART-S-004 Blue Symmetry 950 7 5 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 Henry Martinez 602-555-0107 henry@artsupply.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 2
|
|
||||||
ART-S-005 Urban Collage 550 5 6 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 Henry Martinez 602-555-0107 henry@artsupply.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 3
|
|
||||||
ART-H-002 Earth Vessel 420 10 8 approved 28-MAR-27 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 Henry Martinez 602-555-0107 henry@artsupply.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 8
|
|
||||||
ART-H-003 Quiet Reflection 500 7 4 pending 24-SEP-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 Henry Martinez 602-555-0107 henry@artsupply.com 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7
|
|
||||||
|
|
||||||
10 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> --Q7: Select distinct rows using joins on 3 tables
|
|
||||||
SQL> SELECT DISTINCT iv.SKU, iv.PRODUCT_NAME,iv.BASE_PRICE,iv.LEAD_TIME_DAYS, iv.QUANTITY_AVAILABLE,
|
|
||||||
2 au.AUTHORIZATION_STATUS, au.EXPIRATION_DATE, au.AUTHORIZATION_DATE, au.FK_CONTACT_ID, au.FK_DOCUMENT_ID,
|
|
||||||
3 oi.ORDER_ITEM_ID, oi.QUANTITY, oi.UNIT_PRICE, oi.TRANSACTION_ID, oi.LINE_TOTAL
|
|
||||||
4 FROM INVENTORY iv
|
|
||||||
5 JOIN "AUTHORIZATION" au ON au.AUTHORIZATION_ID = iv.AUTHORIZATION_ID
|
|
||||||
6 JOIN ORDER_ITEMS oi ON oi.FK_INVENTORY_ID = iv.INVENTORY_ID;
|
|
||||||
no rows selected
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q8: Use GROUP BY and HAVING in a select statement using one or more tables
|
|
||||||
SQL> SELECT iv.SKU
|
|
||||||
2 FROM INVENTORY iv
|
|
||||||
3 JOIN "AUTHORIZATION" au ON au.AUTHORIZATION_ID = iv.AUTHORIZATION_ID
|
|
||||||
4 JOIN ORDER_ITEMS oi ON oi.FK_INVENTORY_ID = iv.INVENTORY_ID
|
|
||||||
5 GROUP BY iv.SKU, iv.QUANTITY_AVAILABLE HAVING iv.QUANTITY_AVAILABLE > 0;
|
|
||||||
no rows selected
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q9: Use IN clause to select data from one or more tables
|
|
||||||
SQL> SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID WHERE ur.FK_ROLE_ID IN (100, 200, 300);
|
|
||||||
|
|
||||||
PROFILE_ID FK_CONTACT_ID ACTIV MODIFIED_BY CREATED_DT MODIFIED_DT FK_PROFILE_ID FK_ROLE_ID PASSWORDHASH
|
|
||||||
---------- ------------- ----- ----------- ------------------------------- ------------------------------- ------------- ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
||||||
1 1 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 1 100
|
|
||||||
2 2 true 2 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 2 300
|
|
||||||
3 3 true 3 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 3 300
|
|
||||||
4 4 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 4 300
|
|
||||||
5 5 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 5 300
|
|
||||||
6 6 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 200
|
|
||||||
7 7 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 200
|
|
||||||
|
|
||||||
7 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q10: Select length of one column from one table (use LENGTH function)
|
|
||||||
SQL> SELECT LENGTH(ROLENAME) FROM ROLE;
|
|
||||||
|
|
||||||
LENGTH(ROLENAME)
|
|
||||||
----------------
|
|
||||||
6
|
|
||||||
8
|
|
||||||
5
|
|
||||||
8
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q11: Delete one record from one table. ROLLBACK afterwards so that the data will not be physically removed.
|
|
||||||
SQL> SAVEPOINT sp1;
|
|
||||||
|
|
||||||
Savepoint created.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID WHERE ur.FK_ROLE_ID IN (100, 200, 300);
|
|
||||||
|
|
||||||
PROFILE_ID FK_CONTACT_ID ACTIV MODIFIED_BY CREATED_DT MODIFIED_DT FK_PROFILE_ID FK_ROLE_ID PASSWORDHASH
|
|
||||||
---------- ------------- ----- ----------- ------------------------------- ------------------------------- ------------- ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
||||||
1 1 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 1 100
|
|
||||||
2 2 true 2 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 2 300
|
|
||||||
3 3 true 3 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 3 300
|
|
||||||
4 4 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 4 300
|
|
||||||
5 5 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 5 300
|
|
||||||
6 6 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 200
|
|
||||||
7 7 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 200
|
|
||||||
|
|
||||||
7 rows selected.
|
|
||||||
|
|
||||||
SQL> DELETE USERROLE WHERE FK_PROFILE_ID=3 AND FK_ROLE_ID=300;
|
|
||||||
|
|
||||||
1 row deleted.
|
|
||||||
|
|
||||||
SQL> SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID WHERE ur.FK_ROLE_ID IN (100, 200, 300);
|
|
||||||
|
|
||||||
PROFILE_ID FK_CONTACT_ID ACTIV MODIFIED_BY CREATED_DT MODIFIED_DT FK_PROFILE_ID FK_ROLE_ID PASSWORDHASH
|
|
||||||
---------- ------------- ----- ----------- ------------------------------- ------------------------------- ------------- ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
||||||
1 1 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 1 100
|
|
||||||
2 2 true 2 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 2 300
|
|
||||||
4 4 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 4 300
|
|
||||||
5 5 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 5 300
|
|
||||||
6 6 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 6 200
|
|
||||||
7 7 true 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 7 200
|
|
||||||
|
|
||||||
6 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> ROLLBACK TO SAVEPOINT sp1;
|
|
||||||
|
|
||||||
Rollback complete.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q12: Update one record from one table. demonstrate table contents before and after the UPDATE.
|
|
||||||
SQL> SELECT * FROM PROFILE WHERE PROFILE_ID=3;
|
|
||||||
|
|
||||||
PROFILE_ID FK_CONTACT_ID ACTIV MODIFIED_BY CREATED_DT MODIFIED_DT
|
|
||||||
---------- ------------- ----- ----------- ------------------------------- -------------------------------
|
|
||||||
3 3 true 3 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
|
||||||
|
|
||||||
SQL> UPDATE PROFILE SET ACTIVE = FALSE WHERE PROFILE_ID=3;
|
|
||||||
|
|
||||||
1 row updated.
|
|
||||||
|
|
||||||
SQL> SELECT * FROM PROFILE WHERE PROFILE_ID=3;
|
|
||||||
|
|
||||||
PROFILE_ID FK_CONTACT_ID ACTIV MODIFIED_BY CREATED_DT MODIFIED_DT
|
|
||||||
---------- ------------- ----- ----------- ------------------------------- -------------------------------
|
|
||||||
3 3 false 3 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> ROLLBACK TO SAVEPOINT sp1;
|
|
||||||
|
|
||||||
Rollback complete.
|
|
||||||
|
|
||||||
SQL> COMMIT;
|
|
||||||
|
|
||||||
Commit complete.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q13: Plans show
|
|
||||||
SQL> SELECT * FROM PLAN pl
|
|
||||||
2 LEFT OUTER JOIN DOCUMENT doc ON pl.FK_DOCUMENT_ID = doc.DOCUMENT_ID;
|
|
||||||
|
|
||||||
PLAN_ID DESCRIPTION FK_DOCUMENT_ID DURATION PRICE MODIFIED_BY CREATED_DT MODIFIED_DT DOCUMENT_ID DOCUMENT_URL
|
|
||||||
---------- -------------------------------- -------------- ---------- ---------- ----------- ------------------------------- ------------------------------- ----------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
||||||
1 Spring Gala Preview 9 4 75 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 9 https://art.com/docs/plan-spring-gala-2025.pdf
|
|
||||||
2 Spring Gala Standard 9 8 120 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 9 https://art.com/docs/plan-spring-gala-2025.pdf
|
|
||||||
3 Spring Gala VIP 9 12 250 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 9 https://art.com/docs/plan-spring-gala-2025.pdf
|
|
||||||
4 Summer Exhibit Basic 10 4 50 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 10 https://art.com/docs/plan-summer-exhibit-2025.pdf
|
|
||||||
5 Summer Exhibit Plus 10 8 100 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 10 https://art.com/docs/plan-summer-exhibit-2025.pdf
|
|
||||||
6 Summer Exhibit Premium 10 16 200 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 10 https://art.com/docs/plan-summer-exhibit-2025.pdf
|
|
||||||
7 Fall Exhibition Access 11 4 60 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 11 https://art.com/docs/plan-fall-exhibition-2025.pdf
|
|
||||||
8 Fall Exhibition Full Day 11 8 110 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 11 https://art.com/docs/plan-fall-exhibition-2025.pdf
|
|
||||||
9 Fall Exhibition Weekend 11 24 180 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 11 https://art.com/docs/plan-fall-exhibition-2025.pdf
|
|
||||||
10 Annual Patron Pass 11 200 500 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM 11 https://art.com/docs/plan-fall-exhibition-2025.pdf
|
|
||||||
|
|
||||||
10 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q14: show authorized suppliers whose expiration date is greater than 30 days from now.
|
|
||||||
SQL> SELECT * FROM VIEW_SUPPLIER vsu
|
|
||||||
2 LEFT OUTER JOIN AUTHORIZATION aut ON aut.FK_CONTACT_ID = vsu.FK_CONTACT_ID
|
|
||||||
3 WHERE aut.AUTHORIZATION_STATUS='approved' AND aut.EXPIRATION_DATE > SYSDATE+30;
|
|
||||||
|
|
||||||
FK_PROFILE_ID FK_CONTACT_ID ROLENAME ACTIV FIRST_NAME LAST_NAME AUTHORIZATION_ID FK_CONTACT_ID AUTHORIZATION_ST AUTHORIZATION_DATE EXPIRATION_DATE FK_DOCUMENT_ID MODIFIED_BY CREATED_DT MODIFIED_DT
|
|
||||||
------------- ------------- ---------------- ----- ---------------- ---------------- ---------------- ------------- ---------------- ------------------------------- ------------------------------- -------------- ----------- ------------------------------- -------------------------------
|
|
||||||
6 6 SUPPLIER true Stephen Alec 1 6 approved 28-MAR-26 02.36.34.000000000 AM 28-MAR-27 02.36.34.000000000 AM 2 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
|
||||||
6 6 SUPPLIER true Stephen Alec 2 6 approved 28-MAR-26 02.36.34.000000000 AM 28-MAR-27 02.36.34.000000000 AM 3 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
|
||||||
7 7 SUPPLIER true Henry Martinez 5 7 approved 28-MAR-26 02.36.34.000000000 AM 28-MAR-27 02.36.34.000000000 AM 6 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
|
||||||
7 7 SUPPLIER true Henry Martinez 6 7 approved 28-MAR-26 02.36.34.000000000 AM 28-MAR-27 02.36.34.000000000 AM 7 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
|
||||||
7 7 SUPPLIER true Henry Martinez 7 7 approved 28-MAR-26 02.36.34.000000000 AM 28-MAR-27 02.36.34.000000000 AM 8 1 28-MAR-26 02.36.34.000000000 AM 28-MAR-26 02.36.34.000000000 AM
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q15:
|
|
||||||
SQL> SELECT r.ROLENAME, ct.FIRST_NAME, ct.LAST_NAME, pl.DESCRIPTION FROM SUBSCRIPTION srp
|
|
||||||
2 LEFT OUTER JOIN CONTACT ct ON srp.FK_CONTACT_ID = ct.CONTACT_ID
|
|
||||||
3 LEFT OUTER JOIN PROFILE pf ON pf.FK_CONTACT_ID = ct.CONTACT_ID
|
|
||||||
4 LEFT OUTER JOIN USERROLE ur ON ur.FK_PROFILE_ID = pf.PROFILE_ID
|
|
||||||
5 LEFT OUTER JOIN ROLE r ON r.ROLE_ID = ur.FK_ROLE_ID
|
|
||||||
6 LEFT OUTER JOIN PLAN pl ON srp.FK_PLAN_ID = pl.PLAN_ID;
|
|
||||||
|
|
||||||
ROLENAME FIRST_NAME LAST_NAME DESCRIPTION
|
|
||||||
---------------- ---------------- ---------------- --------------------------------
|
|
||||||
CUSTOMER Bob Smith Spring Gala Preview
|
|
||||||
CUSTOMER Bob Smith Summer Exhibit Plus
|
|
||||||
CUSTOMER Bob Smith Fall Exhibition Weekend
|
|
||||||
CUSTOMER David Brown Spring Gala Standard
|
|
||||||
CUSTOMER David Brown Summer Exhibit Premium
|
|
||||||
CUSTOMER David Brown Annual Patron Pass
|
|
||||||
CUSTOMER Emma Davis Spring Gala VIP
|
|
||||||
CUSTOMER Emma Davis Fall Exhibition Access
|
|
||||||
CUSTOMER Frank Wilson Summer Exhibit Basic
|
|
||||||
CUSTOMER Frank Wilson Fall Exhibition Full Day
|
|
||||||
|
|
||||||
10 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q16:
|
|
||||||
SQL> SELECT ct.FIRST_NAME, ct.LAST_NAME, adr.STREET, z.CITY, z.STATE, z.ZIP
|
|
||||||
2 FROM ADDRESS adr
|
|
||||||
3 LEFT OUTER JOIN CONTACT ct ON adr.FK_CONTACT_ID = ct.CONTACT_ID
|
|
||||||
4 LEFT OUTER JOIN ZIP z ON adr.ZIP = z.ZIP;
|
|
||||||
|
|
||||||
FIRST_NAME LAST_NAME STREET CITY ST ZIP
|
|
||||||
---------------- ---------------- -------------------------------- ---------------- -- -----
|
|
||||||
ART SYSTEM 789 Oak St, suite 10 Atherton CA 94027
|
|
||||||
Alice Johnson 789 Oak St, suite 15 Atherton CA 94027
|
|
||||||
Karen Park 789 Oak St, suite 1 Atherton CA 94027
|
|
||||||
Jeese Taylor 789 Oak St, suite 5 Atherton CA 94027
|
|
||||||
James Lee 789 Oak St, suite 15 Atherton CA 94027
|
|
||||||
Stephen Alec 890 Venue Rd Beverly Hills CA 90210
|
|
||||||
Henry Martinez 200 Sunset Blvd Beverly Hills CA 90210
|
|
||||||
Carol White 100 Broadway New York NY 10001
|
|
||||||
Bob Smith 300 Michigan Ave Chicago IL 60601
|
|
||||||
David Brown 400 Main St Houston TX 77001
|
|
||||||
Emma Davis 500 Central Ave Phoenix AZ 85001
|
|
||||||
Frank Wilson 600 Pike St Seattle WA 98101
|
|
||||||
|
|
||||||
12 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q17:
|
|
||||||
SQL> SELECT COALESCE(vws.ROLENAME, vwsp.ROLENAME, vwc.ROLENAME, vwsys.ROLENAME) AS ROLENAME,
|
|
||||||
2 COALESCE(vws.ACTIVE, vwsp.ACTIVE, vwc.ACTIVE, vwsys.ACTIVE) AS ACTIVE,
|
|
||||||
3 ct.FIRST_NAME, ct.LAST_NAME, adr.STREET, z.CITY, z.STATE, z.ZIP
|
|
||||||
4 FROM ADDRESS adr
|
|
||||||
5 LEFT OUTER JOIN CONTACT ct ON adr.FK_CONTACT_ID = ct.CONTACT_ID
|
|
||||||
6 LEFT OUTER JOIN ZIP z ON adr.ZIP = z.ZIP
|
|
||||||
7 LEFT OUTER JOIN VIEW_STAFF vws ON vws.FK_CONTACT_ID = ct.CONTACT_ID
|
|
||||||
8 LEFT OUTER JOIN VIEW_SUPPLIER vwsp ON vwsp.FK_CONTACT_ID = ct.CONTACT_ID
|
|
||||||
9 LEFT OUTER JOIN VIEW_CUSTOMER vwc ON vwc.FK_CONTACT_ID = ct.CONTACT_ID
|
|
||||||
10 LEFT OUTER JOIN VIEW_SYSTEMROLE vwsys ON vwsys.FK_CONTACT_ID = ct.CONTACT_ID;
|
|
||||||
|
|
||||||
ROLENAME ACTIV FIRST_NAME LAST_NAME STREET CITY ST ZIP
|
|
||||||
---------------- ----- ---------------- ---------------- -------------------------------- ---------------- -- -----
|
|
||||||
CUSTOMER false Carol White 100 Broadway New York NY 10001
|
|
||||||
CUSTOMER true Bob Smith 300 Michigan Ave Chicago IL 60601
|
|
||||||
CUSTOMER true David Brown 400 Main St Houston TX 77001
|
|
||||||
CUSTOMER true Emma Davis 500 Central Ave Phoenix AZ 85001
|
|
||||||
CUSTOMER true Frank Wilson 600 Pike St Seattle WA 98101
|
|
||||||
SUPPLIER true Stephen Alec 890 Venue Rd Beverly Hills CA 90210
|
|
||||||
SUPPLIER true Henry Martinez 200 Sunset Blvd Beverly Hills CA 90210
|
|
||||||
SYSTEM true ART SYSTEM 789 Oak St, suite 10 Atherton CA 94027
|
|
||||||
STAFF true Alice Johnson 789 Oak St, suite 15 Atherton CA 94027
|
|
||||||
STAFF true Jeese Taylor 789 Oak St, suite 5 Atherton CA 94027
|
|
||||||
STAFF true James Lee 789 Oak St, suite 15 Atherton CA 94027
|
|
||||||
STAFF true Karen Park 789 Oak St, suite 1 Atherton CA 94027
|
|
||||||
|
|
||||||
12 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q18: Verify rows in tables
|
|
||||||
SQL> SELECT 'CONTACT' AS TABLE_NAME, COUNT(*) AS ROW_COUNT FROM CONTACT UNION ALL
|
|
||||||
2 SELECT 'ZIP', COUNT(*) FROM ZIP UNION ALL
|
|
||||||
3 SELECT 'ADDRESS', COUNT(*) FROM ADDRESS UNION ALL
|
|
||||||
4 SELECT 'ROLE', COUNT(*) FROM ROLE UNION ALL
|
|
||||||
5 SELECT 'PROFILE', COUNT(*) FROM PROFILE UNION ALL
|
|
||||||
6 SELECT 'USERROLE', COUNT(*) FROM USERROLE UNION ALL
|
|
||||||
7 SELECT 'STAFF', COUNT(*) FROM STAFF UNION ALL
|
|
||||||
8 SELECT 'DOCUMENT', COUNT(*) FROM DOCUMENT UNION ALL
|
|
||||||
9 SELECT 'AUTHORIZATION', COUNT(*) FROM AUTHORIZATION UNION ALL
|
|
||||||
10 SELECT 'PLAN', COUNT(*) FROM PLAN UNION ALL
|
|
||||||
11 SELECT 'INVENTORY', COUNT(*) FROM INVENTORY UNION ALL
|
|
||||||
12 SELECT 'EXHIBIT', COUNT(*) FROM EXHIBIT UNION ALL
|
|
||||||
13 SELECT 'ORDER_ITEMS', COUNT(*) FROM ORDER_ITEMS UNION ALL
|
|
||||||
14 SELECT 'INVOICE', COUNT(*) FROM INVOICE UNION ALL
|
|
||||||
15 SELECT 'SUBSCRIPTION', COUNT(*) FROM SUBSCRIPTION UNION ALL
|
|
||||||
16 SELECT 'TASK_HISTORY', COUNT(*) FROM TASK_HISTORY
|
|
||||||
17 ORDER BY TABLE_NAME;
|
|
||||||
|
|
||||||
TABLE_NAME ROW_COUNT
|
|
||||||
------------- ----------
|
|
||||||
ADDRESS 12
|
|
||||||
AUTHORIZATION 9
|
|
||||||
CONTACT 12
|
|
||||||
DOCUMENT 10
|
|
||||||
EXHIBIT 10
|
|
||||||
INVENTORY 10
|
|
||||||
INVOICE 10
|
|
||||||
ORDER_ITEMS 0
|
|
||||||
PLAN 10
|
|
||||||
PROFILE 12
|
|
||||||
ROLE 4
|
|
||||||
STAFF 4
|
|
||||||
SUBSCRIPTION 10
|
|
||||||
TASK_HISTORY 0
|
|
||||||
USERROLE 12
|
|
||||||
ZIP 10
|
|
||||||
|
|
||||||
16 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q19: rough check uniqueness: across tables columns
|
|
||||||
SQL> SELECT RPAD(idx.TABLE_NAME,15,' '), COUNT( col.column_name ), COUNT( col.TABLE_NAME )
|
|
||||||
2 FROM user_indexes idx
|
|
||||||
3 JOIN user_ind_columns col ON ( col.index_name = idx.index_name )
|
|
||||||
4 WHERE idx.uniqueness = 'UNIQUE'
|
|
||||||
5 GROUP BY idx.TABLE_NAME;
|
|
||||||
|
|
||||||
RPAD(IDX.TABLE_ COUNT(COL.COLUMN_NAME) COUNT(COL.TABLE_NAME)
|
|
||||||
--------------- ---------------------- ---------------------
|
|
||||||
CONTACT 1 1
|
|
||||||
ZIP 1 1
|
|
||||||
ADDRESS 2 2
|
|
||||||
ROLE 1 1
|
|
||||||
PROFILE 1 1
|
|
||||||
USERROLE 2 2
|
|
||||||
STAFF 1 1
|
|
||||||
DOCUMENT 1 1
|
|
||||||
PLAN 1 1
|
|
||||||
SUBSCRIPTION 2 2
|
|
||||||
INVOICE 1 1
|
|
||||||
AUTHORIZATION 1 1
|
|
||||||
INVENTORY 3 3
|
|
||||||
EXHIBIT 1 1
|
|
||||||
ORDER_ITEMS 1 1
|
|
||||||
TASK_HISTORY 1 1
|
|
||||||
|
|
||||||
16 rows selected.
|
|
||||||
|
|
||||||
SQL>
|
|
||||||
SQL> -- Q20: Likely weak entity tables;
|
|
||||||
SQL> SELECT pk.table_name
|
|
||||||
2 -- LISTAGG(pk.column_name, ', ') WITHIN GROUP (ORDER BY pk.position) AS primary_key_columns,
|
|
||||||
3 -- LISTAGG(fk.column_name, ', ') WITHIN GROUP (ORDER BY fk.position) AS foreign_key_columns
|
|
||||||
4 FROM all_cons_columns pk
|
|
||||||
5 JOIN all_constraints pkc
|
|
||||||
6 ON pk.constraint_name = pkc.constraint_name
|
|
||||||
7 AND pk.owner = pkc.owner
|
|
||||||
8 JOIN all_cons_columns fk
|
|
||||||
9 ON pk.table_name = fk.table_name
|
|
||||||
10 AND pk.owner = fk.owner
|
|
||||||
11 JOIN all_constraints fkc
|
|
||||||
12 ON fk.constraint_name = fkc.constraint_name
|
|
||||||
13 AND fk.owner = fkc.owner
|
|
||||||
14 WHERE pkc.constraint_type = 'P' -- Primary key
|
|
||||||
15 AND fkc.constraint_type = 'R' -- Foreign key
|
|
||||||
16 AND pk.column_name = fk.column_name -- PK column is also FK column
|
|
||||||
17 AND pk.owner = USER
|
|
||||||
18 GROUP BY pk.table_name
|
|
||||||
19 ORDER BY pk.table_name;
|
|
||||||
|
|
||||||
TABLE_NAME
|
|
||||||
--------------------------------------------------------------------------------------------------------------------------------
|
|
||||||
ADDRESS
|
|
||||||
STAFF
|
|
||||||
SUBSCRIPTION
|
|
||||||
USERROLE
|
|
||||||
|
|
||||||
SQL> -- CREATE SCHEMA
|
|
||||||
SQL>
|
|
||||||
SQL> /
|
|
||||||
388
schema/schema_art_DDL.sql
Executable file
388
schema/schema_art_DDL.sql
Executable file
@@ -0,0 +1,388 @@
|
|||||||
|
-- CREATE SCHEMA
|
||||||
|
/*
|
||||||
|
-- DROP SCHEMA art CASCADE;
|
||||||
|
|
||||||
|
CREATE SCHEMA art AUTHORIZATION sherwinp;
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
-- POSTGRESQL SQL SCHEMA DDL: art
|
||||||
|
SET search_path TO art;
|
||||||
|
|
||||||
|
-- art."document" definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE "document";
|
||||||
|
|
||||||
|
CREATE TABLE "document" (
|
||||||
|
document_id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
|
||||||
|
document_url varchar(254) NOT NULL,
|
||||||
|
CONSTRAINT pk_document PRIMARY KEY (document_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.zip definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE zip;
|
||||||
|
|
||||||
|
CREATE TABLE zip (
|
||||||
|
zip varchar(5) NOT NULL,
|
||||||
|
city varchar(16) NULL,
|
||||||
|
state varchar(2) NULL,
|
||||||
|
CONSTRAINT pk_zip PRIMARY KEY (zip),
|
||||||
|
CONSTRAINT zip_check CHECK (regexp_like((zip)::text, '\d{5}'::text))
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.contact definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE contact;
|
||||||
|
|
||||||
|
CREATE TABLE contact (
|
||||||
|
contact_id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
|
||||||
|
first_name varchar(16) NOT NULL,
|
||||||
|
last_name varchar(16) NOT NULL,
|
||||||
|
phone_no varchar(12) NULL,
|
||||||
|
email varchar(64) NOT NULL,
|
||||||
|
modified_by int4 NULL,
|
||||||
|
created_dt timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||||
|
modified_dt timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||||
|
CONSTRAINT pk_contact_id PRIMARY KEY (contact_id),
|
||||||
|
CONSTRAINT contact_modified_by_fkey FOREIGN KEY (modified_by) REFERENCES contact(contact_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art."plan" definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE "plan";
|
||||||
|
|
||||||
|
CREATE TABLE "plan" (
|
||||||
|
plan_id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
|
||||||
|
description varchar(32) NULL,
|
||||||
|
fk_document_id int4 NOT NULL,
|
||||||
|
duration int4 NULL,
|
||||||
|
price int4 NULL,
|
||||||
|
modified_by int4 NULL,
|
||||||
|
created_dt timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
modified_dt timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
CONSTRAINT pk_plan PRIMARY KEY (plan_id),
|
||||||
|
CONSTRAINT plan_fk_document_id_fkey FOREIGN KEY (fk_document_id) REFERENCES "document"(document_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.profile definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE profile;
|
||||||
|
|
||||||
|
CREATE TABLE profile (
|
||||||
|
profile_id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
|
||||||
|
fk_contact_id int4 NOT NULL,
|
||||||
|
active bool DEFAULT false NULL,
|
||||||
|
modified_by int4 NOT NULL,
|
||||||
|
created_dt timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
modified_dt timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
CONSTRAINT pk_profile_id PRIMARY KEY (profile_id),
|
||||||
|
CONSTRAINT profile_fk_contact_id_fkey FOREIGN KEY (fk_contact_id) REFERENCES contact(contact_id) ON DELETE CASCADE,
|
||||||
|
CONSTRAINT profile_modified_by_fkey FOREIGN KEY (modified_by) REFERENCES profile(profile_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.staff definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE staff;
|
||||||
|
|
||||||
|
CREATE TABLE staff (
|
||||||
|
fk_profile_id int4 NOT NULL,
|
||||||
|
"position" varchar(14) NOT NULL,
|
||||||
|
CONSTRAINT check_position CHECK ((("position")::text = ANY ((ARRAY['Director'::character varying, 'Curator'::character varying, 'Art Handler'::character varying, 'Registrar'::character varying, 'Associate'::character varying])::text[]))),
|
||||||
|
CONSTRAINT pk_staff PRIMARY KEY (fk_profile_id),
|
||||||
|
CONSTRAINT staff_fk_profile_id_fkey FOREIGN KEY (fk_profile_id) REFERENCES profile(profile_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art."subscription" definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE "subscription";
|
||||||
|
|
||||||
|
CREATE TABLE "subscription" (
|
||||||
|
fk_plan_id int4 NOT NULL,
|
||||||
|
fk_contact_id int4 NOT NULL,
|
||||||
|
modified_by int4 NULL,
|
||||||
|
created_dt timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
modified_dt timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
CONSTRAINT pk_subscription PRIMARY KEY (fk_plan_id, fk_contact_id),
|
||||||
|
CONSTRAINT subscription_fk_contact_id_fkey FOREIGN KEY (fk_contact_id) REFERENCES contact(contact_id),
|
||||||
|
CONSTRAINT subscription_fk_plan_id_fkey FOREIGN KEY (fk_plan_id) REFERENCES "plan"(plan_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.task_history definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE task_history;
|
||||||
|
|
||||||
|
CREATE TABLE task_history (
|
||||||
|
task_id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
|
||||||
|
assigned_to_profile_id int4 NOT NULL,
|
||||||
|
created_by_profile_id int4 NOT NULL,
|
||||||
|
related_entity_type varchar(32) NULL,
|
||||||
|
related_entity_id int4 NULL,
|
||||||
|
task_type varchar(32) NOT NULL,
|
||||||
|
task_title varchar(64) NOT NULL,
|
||||||
|
description varchar(128) NULL,
|
||||||
|
fk_document_id int4 NULL,
|
||||||
|
status varchar(16) DEFAULT 'pending'::character varying NULL,
|
||||||
|
due_date timestamp NULL,
|
||||||
|
completed_at timestamp NULL,
|
||||||
|
created_at timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
updated_at timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
CONSTRAINT chk_status CHECK (((status)::text = ANY ((ARRAY['pending'::character varying, 'in_progress'::character varying, 'completed'::character varying, 'cancelled'::character varying])::text[]))),
|
||||||
|
CONSTRAINT task_history_pkey PRIMARY KEY (task_id),
|
||||||
|
CONSTRAINT task_history_fk_document_id_fkey FOREIGN KEY (fk_document_id) REFERENCES "document"(document_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.userrole definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE userrole;
|
||||||
|
|
||||||
|
CREATE TABLE userrole (
|
||||||
|
fk_profile_id int4 NOT NULL,
|
||||||
|
rolename varchar(16) NULL,
|
||||||
|
passwordhash varchar(256) DEFAULT NULL::character varying NULL,
|
||||||
|
CONSTRAINT check_role CHECK (((rolename)::text = ANY ((ARRAY['SYSTEM'::character varying, 'CONTACT'::character varying, 'CUSTOMER'::character varying, 'STAFF'::character varying, 'SUPPLIER'::character varying])::text[]))),
|
||||||
|
CONSTRAINT pk_userrole PRIMARY KEY (fk_profile_id),
|
||||||
|
CONSTRAINT userrole_fk_profile_id_fkey FOREIGN KEY (fk_profile_id) REFERENCES profile(profile_id) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.address definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE address;
|
||||||
|
|
||||||
|
CREATE TABLE address (
|
||||||
|
zip varchar(5) NOT NULL,
|
||||||
|
fk_contact_id int4 NOT NULL,
|
||||||
|
street varchar(32) NOT NULL,
|
||||||
|
CONSTRAINT pk_address PRIMARY KEY (zip, fk_contact_id),
|
||||||
|
CONSTRAINT address_fk_contact_id_fkey FOREIGN KEY (fk_contact_id) REFERENCES contact(contact_id) ON DELETE CASCADE,
|
||||||
|
CONSTRAINT address_zip_fkey FOREIGN KEY (zip) REFERENCES zip(zip)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.authorize definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE authorize;
|
||||||
|
|
||||||
|
CREATE TABLE authorize (
|
||||||
|
authorization_id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
|
||||||
|
fk_contact_id int4 NULL,
|
||||||
|
authorization_status varchar(16) NOT NULL,
|
||||||
|
authorization_date timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
expiration_date timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
fk_document_id int4 NULL,
|
||||||
|
modified_by int4 NULL,
|
||||||
|
created_dt timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
modified_dt timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
CONSTRAINT authorize_pkey PRIMARY KEY (authorization_id),
|
||||||
|
CONSTRAINT check_authorization_status CHECK (((authorization_status)::text = ANY ((ARRAY['pending'::character varying, 'approved'::character varying, 'rejected'::character varying, 'expired'::character varying])::text[]))),
|
||||||
|
CONSTRAINT authorize_fk_contact_id_fkey FOREIGN KEY (fk_contact_id) REFERENCES contact(contact_id),
|
||||||
|
CONSTRAINT authorize_fk_document_id_fkey FOREIGN KEY (fk_document_id) REFERENCES "document"(document_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.inventory definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE inventory;
|
||||||
|
|
||||||
|
CREATE TABLE inventory (
|
||||||
|
inventory_id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
|
||||||
|
fk_contact_id int4 NOT NULL,
|
||||||
|
fk_authorization_id int4 NULL,
|
||||||
|
sku varchar(100) NOT NULL,
|
||||||
|
product_description varchar(100) NOT NULL,
|
||||||
|
unit_cost numeric(10, 2) NOT NULL,
|
||||||
|
lead_time_days int4 NOT NULL,
|
||||||
|
product_name varchar(100) NOT NULL,
|
||||||
|
unit_of_measure varchar(50) NOT NULL,
|
||||||
|
base_price numeric(10, 2) NOT NULL,
|
||||||
|
quantity_available int4 DEFAULT 0 NOT NULL,
|
||||||
|
created_at timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
updated_at timestamp DEFAULT CURRENT_TIMESTAMP NULL,
|
||||||
|
fk_document_id int4 NULL,
|
||||||
|
CONSTRAINT inventory_pkey PRIMARY KEY (inventory_id),
|
||||||
|
CONSTRAINT supplier_unique_sku UNIQUE (fk_contact_id, sku),
|
||||||
|
CONSTRAINT inventory_fk_authorization_id_fkey FOREIGN KEY (fk_authorization_id) REFERENCES authorize(authorization_id),
|
||||||
|
CONSTRAINT inventory_fk_contact_id_fkey FOREIGN KEY (fk_contact_id) REFERENCES contact(contact_id),
|
||||||
|
CONSTRAINT inventory_fk_document_id_fkey FOREIGN KEY (fk_document_id) REFERENCES "document"(document_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.invoice definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE invoice;
|
||||||
|
|
||||||
|
CREATE TABLE invoice (
|
||||||
|
invoice_id uuid DEFAULT gen_random_uuid() NOT NULL,
|
||||||
|
fk_plan_id int4 NULL,
|
||||||
|
fk_contact_id int4 NULL,
|
||||||
|
invoicedate date NULL,
|
||||||
|
amountpaid numeric(10, 2) DEFAULT 0 NULL,
|
||||||
|
CONSTRAINT invoice_pkey PRIMARY KEY (invoice_id),
|
||||||
|
CONSTRAINT invoice_fk_contact_id_fkey FOREIGN KEY (fk_contact_id) REFERENCES contact(contact_id),
|
||||||
|
CONSTRAINT invoice_fk_plan_id_fkey FOREIGN KEY (fk_plan_id) REFERENCES "plan"(plan_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.order_items definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE order_items;
|
||||||
|
|
||||||
|
CREATE TABLE order_items (
|
||||||
|
order_item_id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
|
||||||
|
fk_profile_id int4 NOT NULL,
|
||||||
|
transaction_id varchar(32) NULL,
|
||||||
|
created_at timestamp NOT NULL,
|
||||||
|
quantity int4 DEFAULT 1 NOT NULL,
|
||||||
|
unit_price numeric(10, 2) NOT NULL,
|
||||||
|
line_total numeric(10, 2) NOT NULL,
|
||||||
|
fk_inventory_id int4 NOT NULL,
|
||||||
|
CONSTRAINT order_items_pkey PRIMARY KEY (order_item_id),
|
||||||
|
CONSTRAINT order_items_fk_inventory_id_fkey FOREIGN KEY (fk_inventory_id) REFERENCES inventory(inventory_id),
|
||||||
|
CONSTRAINT order_items_fk_profile_id_fkey FOREIGN KEY (fk_profile_id) REFERENCES profile(profile_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- art.exhibit definition
|
||||||
|
|
||||||
|
-- Drop table
|
||||||
|
|
||||||
|
-- DROP TABLE exhibit;
|
||||||
|
|
||||||
|
CREATE TABLE exhibit (
|
||||||
|
exhibit_id int4 GENERATED ALWAYS AS IDENTITY NOT NULL,
|
||||||
|
fk_inventory_id int4 NOT NULL,
|
||||||
|
fk_plan_id int4 NULL,
|
||||||
|
CONSTRAINT exhibit_pkey PRIMARY KEY (exhibit_id),
|
||||||
|
CONSTRAINT exhibit_fk_inventory_id_fkey FOREIGN KEY (fk_inventory_id) REFERENCES inventory(inventory_id),
|
||||||
|
CONSTRAINT exhibit_fk_plan_id_fkey FOREIGN KEY (fk_plan_id) REFERENCES "plan"(plan_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/* VIEW of available exhibit inventory */
|
||||||
|
CREATE OR REPLACE VIEW view_available_inventory
|
||||||
|
AS SELECT inventory.inventory_id,
|
||||||
|
inventory.fk_contact_id,
|
||||||
|
inventory.fk_authorization_id,
|
||||||
|
inventory.sku,
|
||||||
|
inventory.product_description,
|
||||||
|
inventory.unit_cost,
|
||||||
|
inventory.lead_time_days,
|
||||||
|
inventory.product_name,
|
||||||
|
inventory.unit_of_measure,
|
||||||
|
inventory.base_price,
|
||||||
|
inventory.quantity_available,
|
||||||
|
inventory.created_at,
|
||||||
|
inventory.updated_at,
|
||||||
|
inventory.fk_document_id
|
||||||
|
FROM art.inventory
|
||||||
|
WHERE inventory.quantity_available > 0
|
||||||
|
INTERSECT
|
||||||
|
SELECT exhibit.fk_inventory_id AS inventory_id,
|
||||||
|
NULL::integer AS fk_contact_id,
|
||||||
|
NULL::integer AS fk_authorization_id,
|
||||||
|
NULL::character varying AS sku,
|
||||||
|
NULL::character varying AS product_description,
|
||||||
|
NULL::numeric AS unit_cost,
|
||||||
|
NULL::integer AS lead_time_days,
|
||||||
|
NULL::character varying AS product_name,
|
||||||
|
NULL::character varying AS unit_of_measure,
|
||||||
|
NULL::numeric AS base_price,
|
||||||
|
NULL::integer AS quantity_available,
|
||||||
|
NULL::timestamp without time zone AS created_at,
|
||||||
|
NULL::timestamp without time zone AS updated_at,
|
||||||
|
NULL::integer AS fk_document_id
|
||||||
|
FROM art.exhibit;
|
||||||
|
|
||||||
|
CREATE OR REPLACE VIEW VIEW_SYSTEMROLE AS
|
||||||
|
SELECT u.FK_PROFILE_ID, p.FK_CONTACT_ID, u.ROLENAME, p.ACTIVE FROM
|
||||||
|
USERROLE u
|
||||||
|
JOIN PROFILE p ON p.PROFILE_ID=u.FK_PROFILE_ID AND u.ROLENAME = 'SYSTEM';
|
||||||
|
|
||||||
|
CREATE OR REPLACE VIEW VIEW_STAFF AS
|
||||||
|
SELECT u.FK_PROFILE_ID, p.FK_CONTACT_ID, u.ROLENAME, p.ACTIVE, c.FIRST_NAME, c.LAST_NAME, s.POSITION FROM
|
||||||
|
USERROLE u
|
||||||
|
JOIN PROFILE p ON p.PROFILE_ID=u.FK_PROFILE_ID AND u.ROLENAME = 'STAFF'
|
||||||
|
JOIN CONTACT c ON c.CONTACT_ID = p.FK_CONTACT_ID
|
||||||
|
JOIN STAFF s on s.FK_PROFILE_ID = p.PROFILE_ID;
|
||||||
|
|
||||||
|
CREATE OR REPLACE VIEW VIEW_SUPPLIER AS
|
||||||
|
SELECT u.FK_PROFILE_ID, p.FK_CONTACT_ID, u.ROLENAME, p.ACTIVE, c.FIRST_NAME, c.LAST_NAME FROM
|
||||||
|
USERROLE u
|
||||||
|
JOIN PROFILE p ON p.PROFILE_ID=u.FK_PROFILE_ID AND u.ROLENAME = 'SUPPLIER'
|
||||||
|
JOIN CONTACT c ON c.CONTACT_ID = p.FK_CONTACT_ID;
|
||||||
|
|
||||||
|
CREATE OR REPLACE VIEW VIEW_CUSTOMER AS
|
||||||
|
SELECT u.FK_PROFILE_ID, p.FK_CONTACT_ID, u.ROLENAME, p.ACTIVE, c.FIRST_NAME, c.LAST_NAME FROM
|
||||||
|
USERROLE u
|
||||||
|
JOIN PROFILE p ON p.PROFILE_ID=u.FK_PROFILE_ID AND u.ROLENAME = 'CUSTOMER'
|
||||||
|
JOIN CONTACT c ON c.CONTACT_ID = p.FK_CONTACT_ID;
|
||||||
|
|
||||||
|
-- Trigger Function Paid Invoice, generates subscription
|
||||||
|
CREATE OR REPLACE FUNCTION invoice_paid_subscription()
|
||||||
|
RETURNS trigger
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $function$
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO SUBSCRIPTION (FK_PLAN_ID, FK_CONTACT_ID) VALUES (NEW.FK_PLAN_ID, NEW.FK_CONTACT_ID);
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$function$
|
||||||
|
;
|
||||||
|
-- Trigger on invoice
|
||||||
|
create trigger paid_subscription after
|
||||||
|
insert
|
||||||
|
on invoice for each row
|
||||||
|
execute function invoice_paid_subscription();
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION ORDER_ITEMS_reserved()
|
||||||
|
RETURNS trigger
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $function$
|
||||||
|
BEGIN
|
||||||
|
UPDATE INVENTORY SET QUANTITY_AVAILABLE = QUANTITY_AVAILABLE - NEW.QUANTITY WHERE INVENTORY_ID= NEW.FK_INVENTORY_ID;
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$function$
|
||||||
|
;
|
||||||
|
-- Trigger on ORDER_ITEMS customer ordered items reservation
|
||||||
|
CREATE TRIGGER ORDER_ITEMS_reserved AFTER
|
||||||
|
INSERT
|
||||||
|
ON ORDER_ITEMS FOR EACH ROW
|
||||||
|
execute function ORDER_ITEMS_reserved();
|
||||||
@@ -1,12 +1,10 @@
|
|||||||
-- ORACLE SQL DML: SCHEMA C##ART
|
-- SQL DML: SCHEMA C##ART
|
||||||
SET ECHO ON;
|
SET search_path TO art;
|
||||||
SET SERVEROUTPUT ON;
|
|
||||||
SET PAGESIZE 30;
|
|
||||||
SET HEADING ON;
|
|
||||||
|
|
||||||
|
BEGIN;
|
||||||
-- 20 Queries
|
-- 20 Queries
|
||||||
-- Q1: Select all columns and all rows from one table
|
-- Q1: Select all columns and all rows from one table
|
||||||
SELECT * FROM ROLE;
|
SELECT * FROM USERROLE;
|
||||||
|
|
||||||
-- Q2: Select five columns and all rows from one table
|
-- Q2: Select five columns and all rows from one table
|
||||||
SELECT CONTACT_ID, FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL FROM CONTACT;
|
SELECT CONTACT_ID, FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL FROM CONTACT;
|
||||||
@@ -25,8 +23,8 @@ SELECT * FROM ZIP ORDER BY 1;
|
|||||||
SELECT iv.SKU, iv.PRODUCT_NAME,iv.BASE_PRICE,iv.LEAD_TIME_DAYS, iv.QUANTITY_AVAILABLE,
|
SELECT iv.SKU, iv.PRODUCT_NAME,iv.BASE_PRICE,iv.LEAD_TIME_DAYS, iv.QUANTITY_AVAILABLE,
|
||||||
au.AUTHORIZATION_STATUS, au.EXPIRATION_DATE, au.AUTHORIZATION_DATE, c.*, au.FK_DOCUMENT_ID
|
au.AUTHORIZATION_STATUS, au.EXPIRATION_DATE, au.AUTHORIZATION_DATE, c.*, au.FK_DOCUMENT_ID
|
||||||
FROM INVENTORY iv
|
FROM INVENTORY iv
|
||||||
JOIN "AUTHORIZATION" au ON au.AUTHORIZATION_ID = iv.AUTHORIZATION_ID
|
JOIN authorize au ON au.AUTHORIZATION_ID = iv.FK_AUTHORIZATION_ID
|
||||||
join CONTACT c ON c.CONTACT_ID= iv.FK_CONTACT_ID
|
JOIN CONTACT c ON c.CONTACT_ID= iv.FK_CONTACT_ID
|
||||||
FETCH FIRST 10 ROWS ONLY;
|
FETCH FIRST 10 ROWS ONLY;
|
||||||
|
|
||||||
--Q7: Select distinct rows using joins on 3 tables
|
--Q7: Select distinct rows using joins on 3 tables
|
||||||
@@ -34,28 +32,28 @@ SELECT DISTINCT iv.SKU, iv.PRODUCT_NAME,iv.BASE_PRICE,iv.LEAD_TIME_DAYS, iv.QUAN
|
|||||||
au.AUTHORIZATION_STATUS, au.EXPIRATION_DATE, au.AUTHORIZATION_DATE, au.FK_CONTACT_ID, au.FK_DOCUMENT_ID,
|
au.AUTHORIZATION_STATUS, au.EXPIRATION_DATE, au.AUTHORIZATION_DATE, au.FK_CONTACT_ID, au.FK_DOCUMENT_ID,
|
||||||
oi.ORDER_ITEM_ID, oi.QUANTITY, oi.UNIT_PRICE, oi.TRANSACTION_ID, oi.LINE_TOTAL
|
oi.ORDER_ITEM_ID, oi.QUANTITY, oi.UNIT_PRICE, oi.TRANSACTION_ID, oi.LINE_TOTAL
|
||||||
FROM INVENTORY iv
|
FROM INVENTORY iv
|
||||||
JOIN "AUTHORIZATION" au ON au.AUTHORIZATION_ID = iv.AUTHORIZATION_ID
|
JOIN AUTHORIZE au ON au.AUTHORIZATION_ID = iv.FK_AUTHORIZATION_ID
|
||||||
JOIN ORDER_ITEMS oi ON oi.FK_INVENTORY_ID = iv.INVENTORY_ID;
|
JOIN ORDER_ITEMS oi ON oi.FK_INVENTORY_ID = iv.INVENTORY_ID;
|
||||||
|
|
||||||
-- Q8: Use GROUP BY and HAVING in a select statement using one or more tables
|
-- Q8: Use GROUP BY and HAVING in a select statement using one or more tables
|
||||||
SELECT iv.SKU
|
SELECT iv.SKU
|
||||||
FROM INVENTORY iv
|
FROM INVENTORY iv
|
||||||
JOIN "AUTHORIZATION" au ON au.AUTHORIZATION_ID = iv.AUTHORIZATION_ID
|
JOIN AUTHORIZE au ON au.AUTHORIZATION_ID = iv.FK_AUTHORIZATION_ID
|
||||||
JOIN ORDER_ITEMS oi ON oi.FK_INVENTORY_ID = iv.INVENTORY_ID
|
JOIN ORDER_ITEMS oi ON oi.FK_INVENTORY_ID = iv.INVENTORY_ID
|
||||||
GROUP BY iv.SKU, iv.QUANTITY_AVAILABLE HAVING iv.QUANTITY_AVAILABLE > 0;
|
GROUP BY iv.SKU, iv.QUANTITY_AVAILABLE HAVING iv.QUANTITY_AVAILABLE > 0;
|
||||||
|
|
||||||
-- Q9: Use IN clause to select data from one or more tables
|
-- Q9: Use IN clause to select data from one or more tables
|
||||||
SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID WHERE ur.FK_ROLE_ID IN (100, 200, 300);
|
SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID;
|
||||||
|
|
||||||
-- Q10: Select length of one column from one table (use LENGTH function)
|
-- Q10: Select length of one column from one table (use LENGTH function)
|
||||||
SELECT LENGTH(ROLENAME) FROM ROLE;
|
SELECT LENGTH(ROLENAME) FROM USERROLE;
|
||||||
|
|
||||||
-- Q11: Delete one record from one table. ROLLBACK afterwards so that the data will not be physically removed.
|
-- Q11: Delete one record from one table. ROLLBACK afterwards so that the data will not be physically removed.
|
||||||
SAVEPOINT sp1;
|
SAVEPOINT sp1;
|
||||||
|
|
||||||
SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID WHERE ur.FK_ROLE_ID IN (100, 200, 300);
|
SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID;
|
||||||
DELETE USERROLE WHERE FK_PROFILE_ID=3 AND FK_ROLE_ID=300;
|
DELETE FROM USERROLE WHERE FK_PROFILE_ID=3;
|
||||||
SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID WHERE ur.FK_ROLE_ID IN (100, 200, 300);
|
SELECT * FROM PROFILE pf JOIN USERROLE ur ON pf.PROFILE_ID = ur.FK_PROFILE_ID;
|
||||||
|
|
||||||
ROLLBACK TO SAVEPOINT sp1;
|
ROLLBACK TO SAVEPOINT sp1;
|
||||||
|
|
||||||
@@ -73,15 +71,14 @@ LEFT OUTER JOIN DOCUMENT doc ON pl.FK_DOCUMENT_ID = doc.DOCUMENT_ID;
|
|||||||
|
|
||||||
-- Q14: show authorized suppliers whose expiration date is greater than 30 days from now.
|
-- Q14: show authorized suppliers whose expiration date is greater than 30 days from now.
|
||||||
SELECT * FROM VIEW_SUPPLIER vsu
|
SELECT * FROM VIEW_SUPPLIER vsu
|
||||||
LEFT OUTER JOIN AUTHORIZATION aut ON aut.FK_CONTACT_ID = vsu.FK_CONTACT_ID
|
LEFT OUTER JOIN AUTHORIZE aut ON aut.FK_CONTACT_ID = vsu.FK_CONTACT_ID
|
||||||
WHERE aut.AUTHORIZATION_STATUS='approved' AND aut.EXPIRATION_DATE > SYSDATE+30;
|
WHERE aut.AUTHORIZATION_STATUS='approved' AND aut.EXPIRATION_DATE > CURRENT_TIMESTAMP + INTERVAL '30 days';
|
||||||
|
|
||||||
-- Q15:
|
-- Q15:
|
||||||
SELECT r.ROLENAME, ct.FIRST_NAME, ct.LAST_NAME, pl.DESCRIPTION FROM SUBSCRIPTION srp
|
SELECT ur.ROLENAME, ct.FIRST_NAME, ct.LAST_NAME, pl.DESCRIPTION FROM SUBSCRIPTION srp
|
||||||
LEFT OUTER JOIN CONTACT ct ON srp.FK_CONTACT_ID = ct.CONTACT_ID
|
LEFT OUTER JOIN CONTACT ct ON srp.FK_CONTACT_ID = ct.CONTACT_ID
|
||||||
LEFT OUTER JOIN PROFILE pf ON pf.FK_CONTACT_ID = ct.CONTACT_ID
|
LEFT OUTER JOIN PROFILE pf ON pf.FK_CONTACT_ID = ct.CONTACT_ID
|
||||||
LEFT OUTER JOIN USERROLE ur ON ur.FK_PROFILE_ID = pf.PROFILE_ID
|
LEFT OUTER JOIN USERROLE ur ON ur.FK_PROFILE_ID = pf.PROFILE_ID
|
||||||
LEFT OUTER JOIN ROLE r ON r.ROLE_ID = ur.FK_ROLE_ID
|
|
||||||
LEFT OUTER JOIN PLAN pl ON srp.FK_PLAN_ID = pl.PLAN_ID;
|
LEFT OUTER JOIN PLAN pl ON srp.FK_PLAN_ID = pl.PLAN_ID;
|
||||||
|
|
||||||
-- Q16:
|
-- Q16:
|
||||||
@@ -106,12 +103,11 @@ LEFT OUTER JOIN VIEW_SYSTEMROLE vwsys ON vwsys.FK_CONTACT_ID = ct.CONTACT_ID;
|
|||||||
SELECT 'CONTACT' AS TABLE_NAME, COUNT(*) AS ROW_COUNT FROM CONTACT UNION ALL
|
SELECT 'CONTACT' AS TABLE_NAME, COUNT(*) AS ROW_COUNT FROM CONTACT UNION ALL
|
||||||
SELECT 'ZIP', COUNT(*) FROM ZIP UNION ALL
|
SELECT 'ZIP', COUNT(*) FROM ZIP UNION ALL
|
||||||
SELECT 'ADDRESS', COUNT(*) FROM ADDRESS UNION ALL
|
SELECT 'ADDRESS', COUNT(*) FROM ADDRESS UNION ALL
|
||||||
SELECT 'ROLE', COUNT(*) FROM ROLE UNION ALL
|
|
||||||
SELECT 'PROFILE', COUNT(*) FROM PROFILE UNION ALL
|
SELECT 'PROFILE', COUNT(*) FROM PROFILE UNION ALL
|
||||||
SELECT 'USERROLE', COUNT(*) FROM USERROLE UNION ALL
|
SELECT 'USERROLE', COUNT(*) FROM USERROLE UNION ALL
|
||||||
SELECT 'STAFF', COUNT(*) FROM STAFF UNION ALL
|
SELECT 'STAFF', COUNT(*) FROM STAFF UNION ALL
|
||||||
SELECT 'DOCUMENT', COUNT(*) FROM DOCUMENT UNION ALL
|
SELECT 'DOCUMENT', COUNT(*) FROM DOCUMENT UNION ALL
|
||||||
SELECT 'AUTHORIZATION', COUNT(*) FROM AUTHORIZATION UNION ALL
|
SELECT 'AUTHORIZE', COUNT(*) FROM AUTHORIZE UNION ALL
|
||||||
SELECT 'PLAN', COUNT(*) FROM PLAN UNION ALL
|
SELECT 'PLAN', COUNT(*) FROM PLAN UNION ALL
|
||||||
SELECT 'INVENTORY', COUNT(*) FROM INVENTORY UNION ALL
|
SELECT 'INVENTORY', COUNT(*) FROM INVENTORY UNION ALL
|
||||||
SELECT 'EXHIBIT', COUNT(*) FROM EXHIBIT UNION ALL
|
SELECT 'EXHIBIT', COUNT(*) FROM EXHIBIT UNION ALL
|
||||||
@@ -122,31 +118,43 @@ SELECT 'TASK_HISTORY', COUNT(*) FROM TASK_HISTORY
|
|||||||
ORDER BY TABLE_NAME;
|
ORDER BY TABLE_NAME;
|
||||||
|
|
||||||
-- Q19: rough check uniqueness: across tables columns
|
-- Q19: rough check uniqueness: across tables columns
|
||||||
SELECT RPAD(idx.TABLE_NAME,15,' '), COUNT( col.column_name ), COUNT( col.TABLE_NAME )
|
-- Q19: Unique index column counts per table
|
||||||
FROM user_indexes idx
|
-- Oracle: user_indexes + user_ind_columns
|
||||||
JOIN user_ind_columns col ON ( col.index_name = idx.index_name )
|
-- PG equivalent: pg_indexes (basic) or pg_index + pg_class + pg_attribute
|
||||||
WHERE idx.uniqueness = 'UNIQUE'
|
SELECT
|
||||||
GROUP BY idx.TABLE_NAME;
|
t.relname AS table_name,
|
||||||
|
COUNT(DISTINCT i.indexrelid) AS unique_index_count,
|
||||||
|
COUNT(a.attname) AS unique_column_count
|
||||||
|
FROM pg_index i
|
||||||
|
JOIN pg_class t ON t.oid = i.indrelid
|
||||||
|
JOIN pg_class ix ON ix.oid = i.indexrelid
|
||||||
|
JOIN pg_attribute a ON a.attrelid = t.oid
|
||||||
|
AND a.attnum = ANY(i.indkey)
|
||||||
|
WHERE i.indisunique = TRUE
|
||||||
|
AND t.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
|
||||||
|
GROUP BY t.relname
|
||||||
|
ORDER BY t.relname;
|
||||||
|
|
||||||
-- Q20: Likely weak entity tables;
|
-- Q20: Likely weak entity tables — tables where a PK column is also an FK column
|
||||||
SELECT pk.table_name
|
-- Oracle: all_cons_columns + all_constraints filtered to USER
|
||||||
-- LISTAGG(pk.column_name, ', ') WITHIN GROUP (ORDER BY pk.position) AS primary_key_columns,
|
-- PG equivalent: information_schema tables
|
||||||
-- LISTAGG(fk.column_name, ', ') WITHIN GROUP (ORDER BY fk.position) AS foreign_key_columns
|
SELECT tc.table_name
|
||||||
FROM all_cons_columns pk
|
FROM information_schema.table_constraints tc
|
||||||
JOIN all_constraints pkc
|
JOIN information_schema.key_column_usage kcu_pk
|
||||||
ON pk.constraint_name = pkc.constraint_name
|
ON kcu_pk.constraint_name = tc.constraint_name
|
||||||
AND pk.owner = pkc.owner
|
AND kcu_pk.table_schema = tc.table_schema
|
||||||
JOIN all_cons_columns fk
|
JOIN information_schema.key_column_usage kcu_fk
|
||||||
ON pk.table_name = fk.table_name
|
ON kcu_fk.table_name = tc.table_name
|
||||||
AND pk.owner = fk.owner
|
AND kcu_fk.column_name = kcu_pk.column_name
|
||||||
JOIN all_constraints fkc
|
AND kcu_fk.table_schema= tc.table_schema
|
||||||
ON fk.constraint_name = fkc.constraint_name
|
JOIN information_schema.table_constraints fkc
|
||||||
AND fk.owner = fkc.owner
|
ON fkc.constraint_name = kcu_fk.constraint_name
|
||||||
WHERE pkc.constraint_type = 'P' -- Primary key
|
AND fkc.table_schema = kcu_fk.table_schema
|
||||||
AND fkc.constraint_type = 'R' -- Foreign key
|
WHERE tc.constraint_type = 'PRIMARY KEY'
|
||||||
AND pk.column_name = fk.column_name -- PK column is also FK column
|
AND fkc.constraint_type = 'FOREIGN KEY'
|
||||||
AND pk.owner = USER
|
AND tc.table_schema = current_schema()
|
||||||
GROUP BY pk.table_name
|
GROUP BY tc.table_name
|
||||||
ORDER BY pk.table_name;-- CREATE SCHEMA
|
ORDER BY tc.table_name;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
/
|
|
||||||
263
schema/schema_art_DML_inserts.sql
Normal file
263
schema/schema_art_DML_inserts.sql
Normal file
@@ -0,0 +1,263 @@
|
|||||||
|
SET search_path TO art;
|
||||||
|
|
||||||
|
-- SYSTEM ROLE
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('ART', 'SYSTEM', '000-1234', 'arts@art.com', 1);
|
||||||
|
-- STAFF ROLE
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Alice', 'Johnson', '650-555-9012', 'alice.johnson@art.com', 1);
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ( 'Karen', 'Park', '206-555-0110', 'karen.park@art.com', 1);
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ( 'Jeese', 'Taylor', '713-555-0106', 'grace.taylor@art.com', 1);
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ( 'James', 'Lee', '206-555-0109', 'james.lee@art.com', 1);
|
||||||
|
-- SUPPLIER ROLE
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Stephen', 'Alec', '424-546-9312', 'salec@eizel.com', 1);
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Henry', 'Martinez', '602-555-0107', 'henry@artsupply.com', 1);
|
||||||
|
-- CUSTOMER ROLE
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Carol', 'White', '212-555-0102', 'carol.white@mail.com', 1);
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Bob', 'Smith', '212-555-0101', 'bob.smith@mail.com', 1);
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('David', 'Brown', '312-555-0103', 'david.brown@mail.com', 1);
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Emma', 'Davis', '312-555-0104', 'emma.davis@mail.com', 1);
|
||||||
|
INSERT INTO CONTACT ( FIRST_NAME, LAST_NAME, PHONE_NO, EMAIL, MODIFIED_BY) VALUES ('Frank', 'Wilson', '713-555-0105', 'frank.wilson@mail.com', 1);
|
||||||
|
|
||||||
|
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('10001', 'New York', 'NY');
|
||||||
|
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('90210', 'Beverly Hills', 'CA');
|
||||||
|
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('94027', 'Atherton', 'CA');
|
||||||
|
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('90211', 'Los Angeles', 'CA');
|
||||||
|
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('60601', 'Chicago', 'IL');
|
||||||
|
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('77001', 'Houston', 'TX');
|
||||||
|
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('85001', 'Phoenix', 'AZ');
|
||||||
|
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('98101', 'Seattle', 'WA');
|
||||||
|
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('02101', 'Boston', 'MA');
|
||||||
|
INSERT INTO ZIP (ZIP, CITY, STATE) VALUES ('33101', 'Miami', 'FL');
|
||||||
|
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (1, '789 Oak St, suite 10', '94027');
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (2, '789 Oak St, suite 15', '94027');
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (3, '789 Oak St, suite 1', '94027');
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (4, '789 Oak St, suite 5', '94027');
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (5, '789 Oak St, suite 15', '94027');
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (6, '890 Venue Rd', '90210');
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (7, '200 Sunset Blvd', '90210');
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (8, '100 Broadway', '10001');
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (9, '300 Michigan Ave', '60601');
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP) VALUES (10, '400 Main St', '77001');
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP ) VALUES (11, '500 Central Ave', '85001');
|
||||||
|
INSERT INTO ADDRESS (FK_CONTACT_ID, STREET, ZIP ) VALUES (12, '600 Pike St', '98101');
|
||||||
|
|
||||||
|
-- SYSTEMPROFILE
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (1, TRUE, 1);
|
||||||
|
-- STAFF PROFILE
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (2, TRUE, 2);
|
||||||
|
-- SUPPLIER
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (3, TRUE, 3);
|
||||||
|
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (4, TRUE, 1);
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (5, TRUE, 1);
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (6, TRUE, 1);
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (7, TRUE, 1);
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (8, FALSE, 1); -- inactive
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (9, TRUE, 1);
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (10, TRUE, 1);
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (11, TRUE, 1);
|
||||||
|
INSERT INTO PROFILE (FK_CONTACT_ID, ACTIVE, MODIFIED_BY) VALUES (12, TRUE, 1);
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME, PASSWORDHASH) VALUES (1, 'SYSTEM', NULL);
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME) VALUES (2, 'STAFF');
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME) VALUES (3, 'STAFF');
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME) VALUES (4, 'STAFF');
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME) VALUES (5, 'STAFF');
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME) VALUES (6, 'SUPPLIER');
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME) VALUES (7, 'SUPPLIER');
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME) VALUES (8, 'CUSTOMER'); -- inactive customer
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME) VALUES (9, 'CUSTOMER');
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME) VALUES (10, 'CUSTOMER');
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME) VALUES (11, 'CUSTOMER');
|
||||||
|
INSERT INTO USERROLE (FK_PROFILE_ID, ROLENAME) VALUES (12, 'CUSTOMER');
|
||||||
|
|
||||||
|
INSERT INTO STAFF (FK_PROFILE_ID, POSITION) VALUES (2, 'Director');
|
||||||
|
INSERT INTO STAFF (FK_PROFILE_ID, POSITION) VALUES (3, 'Registrar');
|
||||||
|
INSERT INTO STAFF (FK_PROFILE_ID, POSITION) VALUES (4, 'Curator');
|
||||||
|
INSERT INTO STAFF (FK_PROFILE_ID, POSITION) VALUES (5, 'Art Handler');
|
||||||
|
|
||||||
|
INSERT INTO DOCUMENT (DOCUMENT_URL) VALUES ('https://art.com/docs/helpdoc.pdf'); --DOC ID 1
|
||||||
|
INSERT INTO DOCUMENT (DOCUMENT_URL) VALUES ('https://art.com/docs/consignment-stephen-crimson-horizon.pdf'); --DOC ID 2
|
||||||
|
INSERT INTO DOCUMENT (DOCUMENT_URL) VALUES ('https://art.com/docs/consignment-stephen-misty-valley.pdf'); --DOC ID 3
|
||||||
|
INSERT INTO DOCUMENT (DOCUMENT_URL) VALUES ('https://art.com/docs/consignment-stephen-twisted-form.pdf'); --DOC ID 4
|
||||||
|
INSERT INTO DOCUMENT (DOCUMENT_URL) VALUES ('https://art.com/docs/consignment-stephen-blue-symmetry.pdf'); --DOC ID 5
|
||||||
|
INSERT INTO DOCUMENT (DOCUMENT_URL) VALUES ('https://art.com/docs/consignment-henry-urban-solitude.pdf'); --DOC ID 6
|
||||||
|
INSERT INTO DOCUMENT (DOCUMENT_URL) VALUES ('https://art.com/docs/consignment-henry-earth-vessel.pdf'); --DOC ID 7
|
||||||
|
INSERT INTO DOCUMENT (DOCUMENT_URL) VALUES ('https://art.com/docs/consignment-henry-quiet-reflection.pdf'); --DOC ID 8
|
||||||
|
|
||||||
|
-- Stephen — approved
|
||||||
|
INSERT INTO AUTHORIZE (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
||||||
|
VALUES ('approved', 6, 2, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + INTERVAL '1 year');
|
||||||
|
-- Stephen — approved
|
||||||
|
INSERT INTO AUTHORIZE (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
||||||
|
VALUES ('approved', 6, 3, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + INTERVAL '1 year');
|
||||||
|
-- Stephen — pending ('pending' status path)
|
||||||
|
INSERT INTO AUTHORIZE (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
||||||
|
VALUES ('pending', 6, 4, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + INTERVAL '1 year');
|
||||||
|
-- Stephen — rejected ('rejected' status path)
|
||||||
|
INSERT INTO AUTHORIZE (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
||||||
|
VALUES ('rejected', 6, 5, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + INTERVAL '30 days');
|
||||||
|
-- Henry — approved
|
||||||
|
INSERT INTO AUTHORIZE (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
||||||
|
VALUES ('approved', 7, 6, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + INTERVAL '1 year');
|
||||||
|
-- Henry — approved
|
||||||
|
INSERT INTO AUTHORIZE (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
||||||
|
VALUES ('approved', 7, 7, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + INTERVAL '1 year');
|
||||||
|
-- Henry — approved
|
||||||
|
INSERT INTO AUTHORIZE (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
||||||
|
VALUES ('approved', 7, 8, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + INTERVAL '1 year');
|
||||||
|
-- Henry — pending
|
||||||
|
INSERT INTO AUTHORIZE (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
||||||
|
VALUES ('pending', 7, 7, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + INTERVAL '180 days');
|
||||||
|
-- Henry — expired (EXPIRATION_DATE in the past)
|
||||||
|
INSERT INTO AUTHORIZE (AUTHORIZATION_STATUS, FK_CONTACT_ID, FK_DOCUMENT_ID, MODIFIED_BY, AUTHORIZATION_DATE, EXPIRATION_DATE)
|
||||||
|
VALUES ('expired', 7, 8, 1, CURRENT_TIMESTAMP - INTERVAL '365 days', CURRENT_TIMESTAMP - INTERVAL '30 days');
|
||||||
|
|
||||||
|
-- PLAN Documents for exhibition
|
||||||
|
INSERT INTO DOCUMENT (DOCUMENT_URL) VALUES ('https://art.com/docs/plan-spring-gala-2025.pdf'); -- DOC ID 9
|
||||||
|
INSERT INTO DOCUMENT (DOCUMENT_URL) VALUES ('https://art.com/docs/plan-summer-exhibit-2025.pdf'); -- DOC ID 10
|
||||||
|
INSERT INTO DOCUMENT (DOCUMENT_URL) VALUES ('https://art.com/docs/plan-fall-exhibition-2025.pdf'); -- DOC ID 11
|
||||||
|
|
||||||
|
-- PLANS
|
||||||
|
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Spring Gala Preview', 9, 4, 75.00, 1); -- PLAN_ID 1
|
||||||
|
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Spring Gala Standard', 9, 8, 120.00, 1); -- PLAN_ID 2
|
||||||
|
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Spring Gala VIP', 9, 12, 250.00, 1); -- PLAN_ID 3
|
||||||
|
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Summer Exhibit Basic', 10, 4, 50.00, 1); -- PLAN_ID 4
|
||||||
|
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Summer Exhibit Plus', 10, 8, 100.00, 1); -- PLAN_ID 5
|
||||||
|
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Summer Exhibit Premium', 10, 16, 200.00, 1); -- PLAN_ID 6
|
||||||
|
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Fall Exhibition Access', 11, 4, 60.00, 1); -- PLAN_ID 7
|
||||||
|
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Fall Exhibition Full Day',11, 8, 110.00, 1); -- PLAN_ID 8
|
||||||
|
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Fall Exhibition Weekend', 11, 24, 180.00, 1); -- PLAN_ID 9
|
||||||
|
INSERT INTO PLAN (DESCRIPTION, FK_DOCUMENT_ID, DURATION, PRICE, MODIFIED_BY) VALUES ('Annual Patron Pass', 11, 200, 500.00, 1); -- PLAN_ID 10
|
||||||
|
|
||||||
|
-- IV 1 — Crimson Horizon
|
||||||
|
INSERT INTO INVENTORY (FK_CONTACT_ID, FK_AUTHORIZATION_ID, SKU, PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
||||||
|
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
||||||
|
VALUES (6, 1, 'ART-S-001',
|
||||||
|
'Oil on canvas, abstract expressionism, 24x36', 800.00, 7,
|
||||||
|
'Crimson Horizon', 'piece', 1200.00, 5, 2);
|
||||||
|
|
||||||
|
-- IV 2 — Misty Valley
|
||||||
|
INSERT INTO INVENTORY (FK_CONTACT_ID, FK_AUTHORIZATION_ID, SKU,
|
||||||
|
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
||||||
|
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
||||||
|
VALUES (6, 2, 'ART-S-002',
|
||||||
|
'Watercolor on paper, landscape, 18x24', 450.00, 5,
|
||||||
|
'Misty Valley', 'piece', 700.00, 5, 3);
|
||||||
|
|
||||||
|
-- IV 3 — Twisted Form
|
||||||
|
INSERT INTO INVENTORY (FK_CONTACT_ID, FK_AUTHORIZATION_ID, SKU,
|
||||||
|
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
||||||
|
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
||||||
|
VALUES (6, 3, 'ART-S-003',
|
||||||
|
'Bronze sculpture, abstract, 12 in height', 1500.00, 14,
|
||||||
|
'Twisted Form', 'piece', 2200.00, 5, 4);
|
||||||
|
|
||||||
|
-- IV 4 — Blue Symmetry
|
||||||
|
INSERT INTO INVENTORY (FK_CONTACT_ID, FK_AUTHORIZATION_ID, SKU,
|
||||||
|
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
||||||
|
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
||||||
|
VALUES (7, 1, 'ART-S-004',
|
||||||
|
'Acrylic on canvas, geometric, 30x30', 600.00, 7,
|
||||||
|
'Blue Symmetry', 'piece', 950.00, 5, 2);
|
||||||
|
|
||||||
|
-- IV 5 — Urban Collage
|
||||||
|
INSERT INTO INVENTORY (FK_CONTACT_ID, FK_AUTHORIZATION_ID, SKU,
|
||||||
|
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
||||||
|
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
||||||
|
VALUES (7, 2, 'ART-S-005',
|
||||||
|
'Mixed media on board, 20x20', 350.00, 5,
|
||||||
|
'Urban Collage', 'piece', 550.00, 6, 3);
|
||||||
|
|
||||||
|
-- IV 6 — Urban Solitude
|
||||||
|
INSERT INTO INVENTORY (FK_CONTACT_ID, FK_AUTHORIZATION_ID, SKU,
|
||||||
|
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
||||||
|
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
||||||
|
VALUES (6, 6, 'ART-H-001',
|
||||||
|
'Photography print, archival, limited ed 1/10', 900.00, 3,
|
||||||
|
'Urban Solitude', 'piece', 1500.00, 10, 6);
|
||||||
|
|
||||||
|
-- IV 7 — Earth Vessel
|
||||||
|
INSERT INTO INVENTORY (FK_CONTACT_ID, FK_AUTHORIZATION_ID, SKU,
|
||||||
|
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
||||||
|
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
||||||
|
VALUES (7, 7, 'ART-H-002',
|
||||||
|
'Ceramic vessel, hand-thrown and glazed', 250.00, 10,
|
||||||
|
'Earth Vessel', 'piece', 420.00, 8, 7);
|
||||||
|
|
||||||
|
-- IV 8 — Quiet Reflection
|
||||||
|
INSERT INTO INVENTORY (FK_CONTACT_ID, FK_AUTHORIZATION_ID, SKU,
|
||||||
|
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
||||||
|
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
||||||
|
VALUES (7, 8, 'ART-H-003',
|
||||||
|
'Pastel drawing, portrait, 16x20', 300.00, 7,
|
||||||
|
'Quiet Reflection','piece', 500.00, 4, 8);
|
||||||
|
|
||||||
|
-- IV 9 — Neon Dreams
|
||||||
|
INSERT INTO INVENTORY (FK_CONTACT_ID, FK_AUTHORIZATION_ID, SKU,
|
||||||
|
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
||||||
|
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
||||||
|
VALUES (6, 6, 'ART-H-004',
|
||||||
|
'Digital print on aluminum, 24x36', 700.00, 5,
|
||||||
|
'Neon Dreams', 'piece', 1100.00, 6, 6);
|
||||||
|
|
||||||
|
-- IV 10 — Woven Stories
|
||||||
|
INSERT INTO INVENTORY (FK_CONTACT_ID, FK_AUTHORIZATION_ID, SKU,
|
||||||
|
PRODUCT_DESCRIPTION, UNIT_COST, LEAD_TIME_DAYS,
|
||||||
|
PRODUCT_NAME, UNIT_OF_MEASURE, BASE_PRICE, QUANTITY_AVAILABLE, FK_DOCUMENT_ID)
|
||||||
|
VALUES (6, 7, 'ART-H-005',
|
||||||
|
'Textile wall hanging, woven, 36x48', 550.00, 14,
|
||||||
|
'Woven Stories', 'piece', 850.00, 5, 7);
|
||||||
|
|
||||||
|
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (1, 1); -- Crimson Horizon → Spring Preview
|
||||||
|
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (2, 2); -- Misty Valley → Spring Standard
|
||||||
|
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (3, 3); -- Twisted Form → Spring VIP
|
||||||
|
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (4, 4); -- Blue Symmetry → Summer Basic
|
||||||
|
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (5, 5); -- Urban Collage → Summer Plus
|
||||||
|
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (6, 6); -- Urban Solitude → Summer Premium
|
||||||
|
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (7, 7); -- Earth Vessel → Fall Access
|
||||||
|
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (8, 8); -- Quiet Reflection → Fall Full Day
|
||||||
|
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (9, 9); -- Neon Dreams → Fall Weekend
|
||||||
|
INSERT INTO EXHIBIT (FK_INVENTORY_ID, FK_PLAN_ID) VALUES (10, 10); -- Woven Stories → Annual Pass
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (9, 1, DATE'2025-01-01', 75.00); -- Bob — Spring Preview
|
||||||
|
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (10, 2, DATE'2025-01-02', 120.00); -- Carol — Spring Standard
|
||||||
|
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (11, 3, DATE'2025-01-03', 250.00); -- David — Spring VIP
|
||||||
|
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (12, 4, DATE'2025-01-04', 50.00); -- Emma — Summer Basic
|
||||||
|
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (9, 5, DATE'2025-01-05', 100.00); -- Bob — Summer Plus
|
||||||
|
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (10, 6, DATE'2025-01-06', 150.00); -- Carol — Summer Premium
|
||||||
|
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (11, 7, DATE'2025-01-07', 60.00); -- David — Fall Access
|
||||||
|
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (12, 8, DATE'2025-01-08', 110.00); -- Emma — Fall Full Day
|
||||||
|
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (9, 9, DATE'2025-01-09', 180.00); -- Bob — Fall Weekend
|
||||||
|
INSERT INTO INVOICE (FK_CONTACT_ID, FK_PLAN_ID, InvoiceDate, AmountPaid) VALUES (10, 10, DATE'2025-01-10', 500.00); -- Carol — Annual Pass
|
||||||
|
|
||||||
|
INSERT INTO ORDER_ITEMS (FK_PROFILE_ID, TRANSACTION_ID, CREATED_AT, QUANTITY, UNIT_PRICE, LINE_TOTAL, FK_INVENTORY_ID)
|
||||||
|
VALUES (9, 'TXN-2025-0001', TIMESTAMP'2025-02-01 10:00:00', 2, 1200.00, 1200.00, 1); -- Bob → Crimson Horizon
|
||||||
|
INSERT INTO ORDER_ITEMS (FK_PROFILE_ID, TRANSACTION_ID, CREATED_AT, QUANTITY, UNIT_PRICE, LINE_TOTAL, FK_INVENTORY_ID)
|
||||||
|
VALUES (11, 'TXN-2025-0002', TIMESTAMP'2025-02-03 11:30:00', 1, 700.00, 700.00, 2); -- David → Misty Valley
|
||||||
|
|
||||||
|
INSERT INTO TASK_HISTORY (ASSIGNED_TO_PROFILE_ID, CREATED_BY_PROFILE_ID, RELATED_ENTITY_TYPE, RELATED_ENTITY_ID,
|
||||||
|
TASK_TYPE, TASK_TITLE, DESCRIPTION, FK_DOCUMENT_ID, STATUS, DUE_DATE)
|
||||||
|
VALUES (5, 2, 'order', 2, 'logistics', 'Ship Misty Valley', 'Coordinate pickup from Stephen', 19, 'completed', TIMESTAMP'2025-02-15 17:00:00');
|
||||||
|
|
||||||
|
INSERT INTO TASK_HISTORY (ASSIGNED_TO_PROFILE_ID, CREATED_BY_PROFILE_ID, RELATED_ENTITY_TYPE, RELATED_ENTITY_ID,
|
||||||
|
TASK_TYPE, TASK_TITLE, DESCRIPTION, FK_DOCUMENT_ID, STATUS, DUE_DATE)
|
||||||
|
VALUES (4, 2, 'supplier', 18, 'review', 'Review Yuki consignment docs', 'Check Shibori Veil paperwork', 20, 'completed', TIMESTAMP'2025-03-01 12:00:00');
|
||||||
|
|
||||||
|
INSERT INTO TASK_HISTORY (ASSIGNED_TO_PROFILE_ID, CREATED_BY_PROFILE_ID, RELATED_ENTITY_TYPE, RELATED_ENTITY_ID,
|
||||||
|
TASK_TYPE, TASK_TITLE, DESCRIPTION, FK_DOCUMENT_ID, STATUS, DUE_DATE)
|
||||||
|
VALUES (4, 2, 'supplier', 19, 'review', 'Review Diego consignment', 'Evaluate Golden Mesa submission', 20, 'in_progress', TIMESTAMP'2025-04-01 12:00:00');
|
||||||
|
|
||||||
|
INSERT INTO TASK_HISTORY (ASSIGNED_TO_PROFILE_ID, CREATED_BY_PROFILE_ID, RELATED_ENTITY_TYPE, RELATED_ENTITY_ID,
|
||||||
|
TASK_TYPE, TASK_TITLE, DESCRIPTION, FK_DOCUMENT_ID, STATUS, DUE_DATE)
|
||||||
|
VALUES (21, 3, 'order', 5, 'display', 'Install Fall exhibit displays', 'Set up Neon Dreams and Kente Weave', 21, 'in_progress', TIMESTAMP'2025-09-15 09:00:00');
|
||||||
|
|
||||||
|
INSERT INTO TASK_HISTORY (ASSIGNED_TO_PROFILE_ID, CREATED_BY_PROFILE_ID, RELATED_ENTITY_TYPE, RELATED_ENTITY_ID,
|
||||||
|
TASK_TYPE, TASK_TITLE, DESCRIPTION, FK_DOCUMENT_ID, STATUS, DUE_DATE)
|
||||||
|
VALUES (22, 2, 'supplier', 20, 'review', 'Review Amara rhythm prints', 'Confirm limited edition certificates', 20, 'pending', TIMESTAMP'2025-04-10 17:00:00');
|
||||||
|
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
Reference in New Issue
Block a user