ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Trigger no MariaDB

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Mentow
Novato
Novato


Registrado: Quarta-Feira, 15 de Fevereiro de 2017
Mensagens: 25
Localização: Macapá - AP

MensagemEnviada: Qui Fev 08, 2018 8:37 am    Assunto: Trigger no MariaDB Responder com Citação

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;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB