CORE/database/tables/navigation.sql
2022-07-02 07:36:14 +02:00

47 lines
1.7 KiB
SQL

--DROP TABLE navigation PURGE;
CREATE TABLE navigation (
app_id NUMBER(4) CONSTRAINT nn_navigation_app_id NOT NULL,
page_id NUMBER(6) CONSTRAINT nn_navigation_page_id NOT NULL,
--
parent_id NUMBER(6),
order# NUMBER(4),
is_hidden CHAR(1),
is_reset CHAR(1),
is_shared CHAR(1), -- only for CORE app
--
updated_by VARCHAR2(30),
updated_at DATE,
--
CONSTRAINT pk_navigation
PRIMARY KEY (app_id, page_id),
--
CONSTRAINT fk_navigation_app_id
FOREIGN KEY (app_id)
REFERENCES apps (app_id),
--
CONSTRAINT fk_navigation_parent
FOREIGN KEY (app_id, parent_id)
REFERENCES navigation (app_id, page_id),
--
CONSTRAINT ch_navigation_is_hidden
CHECK (is_hidden = 'Y' OR is_hidden IS NULL),
--
CONSTRAINT ch_navigation_is_reset
CHECK (is_reset = 'Y' OR is_reset IS NULL),
--
CONSTRAINT ch_navigation_is_shared
CHECK (is_shared = 'Y' OR is_shared IS NULL)
)
STORAGE (BUFFER_POOL KEEP);
--
COMMENT ON TABLE navigation IS '[CORE] Navigation items';
--
COMMENT ON COLUMN navigation.app_id IS 'APEX application ID';
COMMENT ON COLUMN navigation.page_id IS 'APEX page ID';
COMMENT ON COLUMN navigation.parent_id IS 'Parent page id for tree structure';
COMMENT ON COLUMN navigation.order# IS 'Order of siblings';
COMMENT ON COLUMN navigation.is_hidden IS 'Y = dont show in menu';
COMMENT ON COLUMN navigation.is_reset IS 'Y = reset/clear all items not passed in url';
COMMENT ON COLUMN navigation.is_shared IS 'Y = show these items in other apps, only for CORE app';