Mentow Novato


Registrado: Quarta-Feira, 15 de Fevereiro de 2017 Mensagens: 25 Localização: Macapá - AP
|
Enviada: Qui Fev 08, 2018 8:37 am Assunto: Trigger no MariaDB |
|
|
Bom dia amigos, estoque tentando criar uma trigger que volte os valores para o estoque quando o status da venda for "CANCELADO", tentei fazer mais não tive muito sucesso alguém poderia me ajudar
| Código: |
CREATE OR ALTER TRIGGER CANCELAR_VENDAS FOR TB_VENDAS_PAI
ACTIVE AFTER UPDATE POSITION 0
AS
DECLARE VARIABLE ID_VF INTEGER;
DECLARE VARIABLE QT_VD INTEGER;
BEGIN
IF(NEW.STATUS = 'CANCELADA')THEN
BEGIN
FOR
SELECT ID_ITEM, QTDA FROM VENDAS_ITENS
WHERE VENDAS_ITENS.ID_PAI = OLD.ID
INTO :ID_VF, :QT_VD
DO
BEGIN
UPDATE PRODUTOS_DADOS
SET PRODUTOS_DADOS.STQ_ATUAL = PRODUTOS_DADOS.STQ_ATUAL + :QT_VD
WHERE ID = :ID_VF;
END
END
END
|
Estrutura das tabelas
| Código: |
CREATE TABLE `produtos_dados` (
`ID` int(10) NOT NULL AUTO_INCREMENT,
`REF` int(10) NULL DEFAULT NULL,
`DESCRICAO` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`MARCA` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`ID_GRUPO` int(10) NULL DEFAULT NULL,
`STQ_ATUAL` int(10) NULL DEFAULT 0,
`UN_COMPRA` double(7, 2) NULL DEFAULT NULL,
`UN_VENDA` double(7, 2) NULL DEFAULT NULL,
`UN_LUCRO` double(7, 2) NULL DEFAULT NULL,
`TL_COMPRA` double(7, 2) NULL DEFAULT NULL,
`TL_VENDA` double(7, 2) NULL DEFAULT NULL,
`TL_LUCRO` double(7, 2) NULL DEFAULT NULL,
PRIMARY KEY (`ID`)
CREATE TABLE `venda_dados` (
`ID` int(10) NOT NULL AUTO_INCREMENT,
`ID_CUPOM` int(10) NULL DEFAULT NULL,
`DT_VENDA` date NULL DEFAULT NULL,
`HR_VENDA` time(0) NULL DEFAULT NULL,
`ID_USUARIO` int(10) NULL DEFAULT NULL,
`ID_CLIENTE` int(10) NULL DEFAULT NULL,
`TOTAL_SUB` decimal(12, 2) NULL DEFAULT NULL,
`TOTAL_DESC` decimal(12, 2) NULL DEFAULT NULL,
`TOTAL_PRECO` decimal(12, 2) NULL DEFAULT NULL,
`TOTAL_RECEBIDO` decimal(12, 2) NULL DEFAULT NULL,
`TOTAL_TROCO` decimal(12, 2) NULL DEFAULT NULL,
`TIPO_PAG` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'D',
`STATUS` int(1) NULL DEFAULT 1,
PRIMARY KEY (`ID`)
CREATE TABLE `vendas_itens` (
`ID_PAI` int(10) NOT NULL,
`ID_ITEM` int(10) NOT NULL,
`ITENS` int(10) NULL DEFAULT NULL,
`REF` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`DESCRICAO` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`QTDA` int(10) NULL DEFAULT NULL,
`VALOR_UN` decimal(12, 2) NULL DEFAULT NULL,
`VALOR_TL` decimal(12, 2) NULL DEFAULT NULL,
PRIMARY KEY (`ID_PAI`, `ID_ITEM`) USING BTREE,
INDEX `FK_VENDA_ITENS_2`(`ID_ITEM`) USING BTREE,
CONSTRAINT `FK_VENDA_ITENS_1` FOREIGN KEY (`ID_PAI`) REFERENCES `venda_dados` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_VENDA_ITENS_2` FOREIGN KEY (`ID_ITEM`) REFERENCES `produtos_dados` (`ID`) ON DELETE NO ACTION ON UPDATE CASCADE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
|
_________________ if (Post.State = psResolvido) then
begin
Post.Caption := Post.Caption + ' [RESOLVIDO]';
end; |
|