-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy path013_transactions.sql
64 lines (48 loc) · 1.22 KB
/
013_transactions.sql
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
DROP TABLE IF EXISTS account;
CREATE TABLE account (
account_id SERIAL PRIMARY KEY,
username VARCHAR(128) NOT NULL,
balance INT NOT NULL
);
INSERT INTO account(username, balance) VALUES ('Miso', 120);
INSERT INTO account(username, balance) VALUES ('Jano', 150);
INSERT INTO account(username, balance) VALUES ('Fero', 150);
SELECT *
FROM account
-- Uloha: chceme aby sa tieto operacie vykonali naraz
-- UPDATE account
-- SET balance=100
-- WHERE username='Miso'
-- UPDATE account
-- SET balance=170
-- WHERE username='Jano'
BEGIN;
-- alebo BEGIN TRANSACTION;
-- alebo BEIGN WORK;
UPDATE account
SET balance=100
WHERE username='Miso';
UPDATE account
SET balance=170
WHERE username='Jano';
COMMIT;
-- alebo COMMIT TRANSACTION;
-- alebo COMMIT WORK;
-- Pomocou prikazu ROLLBACK vieme vratit spat transakciu
BEGIN;
UPDATE account
SET balance=balance+1000000
WHERE username='Miso';
ROLLBACK;
-- Tato transakcia sa nikdy nevykonala
-- Telo transakcie nie je viditelne conku pokym sa necommitne
BEGIN;
UPDATE account
SET balance=balance+1000000
WHERE username='Miso';
SELECT *
FROM account;
-- otvorte si teraz novy query tool a skuste tam dat ten select
COMMIT;
-- az teraz bude zmena viditelna
DROP TABLE IF EXISTS account;