-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtask3.sql
More file actions
81 lines (64 loc) · 1.62 KB
/
task3.sql
File metadata and controls
81 lines (64 loc) · 1.62 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
#Задание №1
use shop;
drop procedure if exists hello;
delimiter //
CREATE PROCEDURE hello ()
begin
set @a = HOUR(NOW());
SELECT case
when (0 <= @a) && (@a < 6) then 'Доброй ночи'
when (6 <= @a) && (@a < 12) then 'Доброе утро'
when (12 <= @a) && (@a < 18) then 'Добрый день'
when (18 <= @a) && (@a < 24) then 'Добрый вечер'
end as hello;
end//
call hello();
#Задание №2
use shop;
drop trigger if exists check_update_products;
delimiter //
CREATE TRIGGER check_update_products BEFORE UPDATE ON products
FOR EACH ROW BEGIN
IF (NEW.name is null and NEW.description is null or
old.name is null and NEW.description is null or
NEW.name is null and old.description is null) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Update canceled';
END IF;
END//
delimiter ;
UPDATE products as p SET p.description="wd", p.name="wqd"
WHERE p.id=1;
drop trigger if exists check_insert_products;
delimiter //
CREATE TRIGGER check_insert_products BEFORE insert ON products
FOR EACH ROW BEGIN
IF (NEW.name is null and NEW.description is null) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Insert canceled';
END IF;
END//
INSERT INTO products
(price, catalog_id)
VALUES
(7890.00, 1);
#Задание №2
use shop;
drop procedure if exists fib;
delimiter //
CREATE PROCEDURE fib(n INT)
begin
DECLARE m INT default 0;
DECLARE k INT DEFAULT 1;
DECLARE i INT;
DECLARE tmp INT;
SET m=0;
SET k=1;
SET i=1;
WHILE (i<=n) DO
SET tmp=m+k;
SET m=k;
SET k=tmp;
SET i=i+1;
END WHILE;
select m;
end//
call fib(10)