-- +goose Up -- +goose StatementBegin DECLARE v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_FATO_VENDA'; IF v_count = 0 THEN EXECUTE IMMEDIATE ' CREATE TABLE TB_FLASH_FATO_VENDA ( ID_FATO NUMBER NOT NULL, DATA_REFERENCIA DATE NOT NULL, ANO_REFERENCIA NUMBER(4) NOT NULL, MES_REFERENCIA NUMBER(2) NOT NULL, DIA_REFERENCIA NUMBER(2), DIA_SEMANA NUMBER(2), 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, NRO_TICKETS NUMBER(18,6), VLR_IMP_VNEDA NUMBER(18,6), QTDE_VENDA NUMBER(18,6), VLR_VENDA NUMBER(18,6), VL_TICKET_MEDIO NUMBER(18,6), PROPQTDPRODUTOBASE NUMBER(18,6), DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL, CONSTRAINT PK_TB_FLASH_FATO_VENDA PRIMARY KEY (ID_FATO), CONSTRAINT FK_TB_FLASH_FATO_VENDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO), CONSTRAINT FK_TB_FLASH_FATO_VENDA_EMP FOREIGN KEY (ID_NODO_EMPRESA) REFERENCES TB_FLASH_NODO (ID_NODO), CONSTRAINT CK_TB_FLASH_FATO_VENDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12) )'; 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_VENDA_DATA'; IF v_count = 0 THEN EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_DATA ON TB_FLASH_FATO_VENDA (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_VENDA_ANOMES'; IF v_count = 0 THEN EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_ANOMES ON TB_FLASH_FATO_VENDA (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_VENDA_NODO'; IF v_count = 0 THEN EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_NODO ON TB_FLASH_FATO_VENDA (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_VENDA_EMP'; IF v_count = 0 THEN EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_EMP ON TB_FLASH_FATO_VENDA (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_VENDA_PROD'; IF v_count = 0 THEN EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_PROD ON TB_FLASH_FATO_VENDA (COD_PRODUTO)'; END IF; END; -- +goose StatementEnd -- +goose StatementBegin DECLARE v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_FATO_VENDA'; IF v_count = 0 THEN EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_VENDA ADD CONSTRAINT UK_TB_FLASH_FATO_VENDA UNIQUE (DATA_REFERENCIA, COD_EMPRESA, COD_PRODUTO, NROSEGMENTO)'; 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_VENDA'; IF v_count > 0 THEN EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_FATO_VENDA CASCADE CONSTRAINTS PURGE'; END IF; END; -- +goose StatementEnd