-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprocedures.sql
More file actions
85 lines (78 loc) · 3.66 KB
/
procedures.sql
File metadata and controls
85 lines (78 loc) · 3.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*pedido*/
DELIMITER $$
CREATE PROCEDURE add_pedido (IN id_usuario int, IN id_endereco int, IN id_transportadora int, IN total DOUBLE(16,2))
BEGIN
SET @id = (SELECT CASE WHEN MAX(id) IS NULL THEN 1 ELSE MAX(id)+1 END FROM pedidos);
INSERT INTO pedidos (id, id_usuario, id_endereco, id_transportadora, total, status) VALUES (@id, id_usuario, id_endereco, id_transportadora, total, '');
END $$
DELIMITER ;
/*CARRINHO*/
DELIMITER $$
CREATE PROCEDURE add_carrinho (IN id_produto int, IN id_usuario int, IN tamanho varchar(3), IN quantidade int, IN valor_unit decimal(10,2))
BEGIN
INSERT INTO `itens_carrinho` (`id`,
`id_produtos`,
`id_usuario`,
`tamanho`,
`quantidade`,
`valor_unit`,
`total`,
`data_hora`) VALUES (NULL,
id_produto,
id_usuario,
tamanho,
quantidade,
valor_unit,
valor_unit * quantidade,
current_timestamp());
END $$
DELIMITER ;
/*ENDEREÇO*/
DELIMITER $$
CREATE PROCEDURE add_endereco (IN id_usuario int, IN nome varchar(250), IN sobrenome varchar(250), IN telefone varchar(15), IN cep varchar(20), IN cidade varchar(150), IN id_estado int, IN rua varchar(250), IN bairro varchar(250), IN numero int, IN complemento varchar(250), IN id_pais int)
BEGIN
SET @ordem = (SELECT CASE WHEN MAX(ordem) IS NULL THEN 1 ELSE MAX(ordem)+1 END FROM enderecos);
INSERT INTO `enderecos` (`id`,
`id_usuario`,
`nome`,
`sobrenome`,
`telefone`,
`cep`,
`cidade`,
`id_estado`,
`rua`,
`bairro`,
`numero`,
`complemento`,
`id_pais`,
`ordem`,
`status`) VALUES (NULL,
id_usuario,
nome,
sobrenome,
telefone,
cep,
cidade,
id_estado,
rua,
bairro,
numero,
complemento,
id_pais,
@ordem,
'ativo');
END $$
DELIMITER ;
/*TRIGGER DEFERIR PRODUTO*/
DELIMITER $
CREATE TRIGGER tr_deferir_produto BEFORE INSERT
ON itens_pedido
FOR EACH ROW
BEGIN
SET @id_produto = NEW.id_produto;
SET @quantidade = NEW.quantidade;
SET @quantidade_atual = (SELECT quantidade FROM produtos WHERE id = @id_produto);
SET @nova_quantidade = @quantidade_atual - @quantidade;
UPDATE `produtos` SET `quantidade` = @nova_quantidade WHERE `produtos`.`id` = @id_produto;
END$
DELIMITER ;