【psql】レコードロック

データベースの機能の一つで、あるユーザが参照しているレコードに他のユーザがアクセスできないようにする

FOR UPDATE … 自分が更新する目的で行をロックしておく
FOR SHARE …他からの更新がかからないように行をロック

【PostgreSQL】トランザクション処理の実行

$ sudo -u postgres psql
psql (14.2 (Ubuntu 14.2-1.pgdg20.04+1))
Type “help” for help.

postgres=# \c testdb;
You are now connected to database “testdb” as user “postgres”.
testdb=#

CREATE TABLE book (
id serial NOT NULL,
name VARCHAR(30) NOT NULL,
author VARCHAR(30) NOT NULL,
age integer,
PRIMARY KEY (id)
);

INSERT INTO book(name, author, age) VALUES (‘SQL入門’, ‘Masumi’, 25);
INSERT INTO book(name, author, age) VALUES (‘Flutter入門’, ‘Masumi’, 25);
INSERT INTO book(name, author) VALUES (‘HTML入門’, ‘Hiro’);
INSERT INTO book(name, author, age) VALUES (‘Github入門2’, ‘Emma’, 22);
INSERT INTO book(name, author, age) VALUES (‘Flutter上級’, ‘Oliva’, 45);

testdb=# select * from book;
id | name | author | age
—-+————-+——–+—–
1 | SQL入門 | Masumi | 25
2 | Flutter入門 | Masumi | 25
3 | HTML入門 | Hiro |
4 | Github入門2 | Emma | 22
5 | Flutter上級 | Oliva | 45
(5 rows)

### BEGIN / COMMITとは?
beginはトランザクションを開始するコマンド。
beginが実行されると、自動コミットモードが解除され、それ以降のSQL文による変更が確定しない状態になる。beginをトランザクションを張ると表現することがある。
commitはトランザクションを終了し、変更を確定する

testdb=# begin;
BEGIN
testdb=*# update book set age=age+10 where author=’Emma’;
UPDATE 1
testdb=*# update book set age=age-10 where author=’Oliva’;
UPDATE 1
testdb=*# commit;
COMMIT
testdb=# select * from book;
id | name | author | age
—-+————-+——–+—–
1 | SQL入門 | Masumi | 25
2 | Flutter入門 | Masumi | 25
3 | HTML入門 | Hiro |
4 | Github入門2 | Emma | 32
5 | Flutter上級 | Oliva | 35
(5 rows)

ROLLBACKはトランザクションを終了し、変更を取り消すコマンド

beginとcommitはセットで見た方が良さそうやね

【PostgreSQL】トランザクションについて

トランザクションとはデータベースのデータを利用するときに、複数の処理を一連のものとしてまとめる単位のこと
– Aさんの銀行口座から500万円出金
– Bさんの銀行口座に500万円入金

一連の処理が問題なく行われたときはコミットで終了、途中エラーが発生したときはロールバック
DBのトランザクションはACID特性がある
Atomicity … 完全に実行されるか
Consistency … 実行前後でデータの整合性が担保
Isolation … コミットが確実に保存される

### トランザクションのコマンド
BEGIN
START TRANSACTION
COMMIT
END
ROLLBACK
ABORT

### 分離レベル
READ UNCOMMITED
READ COMMITED
REPEATABLE READ
SERIALIZABLE

なるほど、概念はなんとなく理解した

フォントのグリフ

字体とほぼ同義語だが、記述記号やスペースを含める
文字と記号を含めたものをグリフセットと呼ぶ
ビットパターンやアウトラインなども指す

Excelでも別フォントにフォールバックされる

いきなりグリフと言われても、celticsのグリフィンしか思いつかんわ