120 lines
4.4 KiB
SQL
120 lines
4.4 KiB
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
DECLARE
|
|
v_count NUMBER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_FATO_PERDA';
|
|
IF v_count = 0 THEN
|
|
EXECUTE IMMEDIATE '
|
|
CREATE TABLE TB_FLASH_FATO_PERDA (
|
|
ID_FATO NUMBER NOT NULL,
|
|
DATA_REFERENCIA DATE NOT NULL,
|
|
ANO_REFERENCIA NUMBER(4,0) NOT NULL,
|
|
MES_REFERENCIA NUMBER(2,0) NOT NULL,
|
|
DIA_REFERENCIA NUMBER(2,0),
|
|
DIA_SEMANA NUMBER(2,0),
|
|
ID_NODO NUMBER NOT NULL,
|
|
ID_NODO_EMPRESA NUMBER NOT NULL,
|
|
COD_EMPRESA NUMBER NOT NULL,
|
|
NOME_EMPRESA VARCHAR2(200),
|
|
COD_PRODUTO NUMBER NOT NULL,
|
|
DESCRICAO_PRODUTO VARCHAR2(300),
|
|
SEQPRODUTOBASE NUMBER,
|
|
NRODIVISAO NUMBER,
|
|
NROSEGMENTO NUMBER,
|
|
VLR_CUSTO_PERDA NUMBER(18,6),
|
|
QTDE_PERDA NUMBER(18,6),
|
|
VLR_PERDA NUMBER(18,6),
|
|
PROPQTDPRODUTOBASE NUMBER(18,6),
|
|
DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL,
|
|
NOME_SEGMENTO VARCHAR2(300),
|
|
CONSTRAINT CK_TB_FLASH_FATO_PERDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12),
|
|
CONSTRAINT PK_TB_FLASH_FATO_PERDA PRIMARY KEY (ID_FATO),
|
|
CONSTRAINT UK_TB_FLASH_FATO_PERDA UNIQUE (DATA_REFERENCIA, COD_EMPRESA, COD_PRODUTO, NROSEGMENTO)
|
|
)';
|
|
END IF;
|
|
END;
|
|
-- +goose StatementEnd
|
|
-- +goose StatementBegin
|
|
DECLARE
|
|
v_count NUMBER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'FK_TB_FLASH_FATO_PERDA_NODO';
|
|
IF v_count = 0 THEN
|
|
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_PERDA ADD CONSTRAINT FK_TB_FLASH_FATO_PERDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO)';
|
|
END IF;
|
|
END;
|
|
-- +goose StatementEnd
|
|
-- +goose StatementBegin
|
|
DECLARE
|
|
v_count NUMBER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'FK_TB_FLASH_FATO_PERDA_EMP';
|
|
IF v_count = 0 THEN
|
|
EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_PERDA ADD CONSTRAINT FK_TB_FLASH_FATO_PERDA_EMP FOREIGN KEY (ID_NODO_EMPRESA) REFERENCES TB_FLASH_NODO (ID_NODO)';
|
|
END IF;
|
|
END;
|
|
-- +goose StatementEnd
|
|
-- +goose StatementBegin
|
|
DECLARE
|
|
v_count NUMBER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_PERDA_DATA';
|
|
IF v_count = 0 THEN
|
|
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_PERDA_DATA ON TB_FLASH_FATO_PERDA (DATA_REFERENCIA)';
|
|
END IF;
|
|
END;
|
|
-- +goose StatementEnd
|
|
-- +goose StatementBegin
|
|
DECLARE
|
|
v_count NUMBER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_PERDA_ANOMES';
|
|
IF v_count = 0 THEN
|
|
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_PERDA_ANOMES ON TB_FLASH_FATO_PERDA (ANO_REFERENCIA, MES_REFERENCIA)';
|
|
END IF;
|
|
END;
|
|
-- +goose StatementEnd
|
|
-- +goose StatementBegin
|
|
DECLARE
|
|
v_count NUMBER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_PERDA_NODO';
|
|
IF v_count = 0 THEN
|
|
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_PERDA_NODO ON TB_FLASH_FATO_PERDA (ID_NODO)';
|
|
END IF;
|
|
END;
|
|
-- +goose StatementEnd
|
|
-- +goose StatementBegin
|
|
DECLARE
|
|
v_count NUMBER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_PERDA_EMP';
|
|
IF v_count = 0 THEN
|
|
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_PERDA_EMP ON TB_FLASH_FATO_PERDA (COD_EMPRESA, ANO_REFERENCIA, MES_REFERENCIA)';
|
|
END IF;
|
|
END;
|
|
-- +goose StatementEnd
|
|
-- +goose StatementBegin
|
|
DECLARE
|
|
v_count NUMBER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_PERDA_PROD';
|
|
IF v_count = 0 THEN
|
|
EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_PERDA_PROD ON TB_FLASH_FATO_PERDA (COD_PRODUTO)';
|
|
END IF;
|
|
END;
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
DECLARE
|
|
v_count NUMBER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_FATO_PERDA';
|
|
IF v_count > 0 THEN
|
|
EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_FATO_PERDA CASCADE CONSTRAINTS PURGE';
|
|
END IF;
|
|
END;
|
|
-- +goose StatementEnd
|