postgreSQL
例えばユーザー名の重複登録をNGとする場合、こんな感じでバリデーションと登録処理を書くことが多い。 ※疑似コードです begin name = "山田太郎" // dbからデータを取ってみて存在しないことを確認する user = getUserByName(name) if user != null { retur…
標準としてのトランザクション分離レベルは一応把握してたけど、MySQLやPostgreSQLとか、実装によって結構事情が異なっててそのあたりあまり理解できてなかったのでPostgreSQLにおいてのトランザクション分離レベルを学び直した。 ※参考にしたのはこのあたり…
以下のような有効期間テーブルから、、 id ユーザーid 有効期間from 有効期間to 1 1 2020-6-1 2020-7-1 2 1 2020-7-1 2020-8-1 3 2 2020-5-1 2020-6-1 4 2 2020-6-1 2020-7-1 以下のようなデータ(ユーザー毎に最新の有効期間のレコード)を取得したい id ユ…
postgres のtimestampはタイムゾーンをもってない 。 だからデータを入れるとき、取得するときにタイムゾーンを気にしないといけない。 timestamp with time zoneで定義すべきかなと思う。 基本的にシステム内部で時間を扱うときは統一的にUTCで扱い、出力時…
インフラ知識詳しくないので、とりあえず最低限動くところまで。 github.com これは何? railsの開発サーバーでの開発と、 dockerを使ってproduction環境での確認ができる環境を構築する設定ファイル郡 バージョン ruby 2.6.3 rails 6 構築方法 railsの新規…
この続き) PostgreSQLのデータ移行(dumpとリストア) - やる気がストロングZERO 接続 psql -h [host] -U [username] [dbname] [(tablename)] db一覧表示 postgres=# ¥d use db postgres=# ¥c [dbname] table一覧表示 dbname=# ¥l table定義表示 dbname=# ¥l …
Django migrationをオンラインで行えるのかどうか考えていた。 オンラインで行えるのかどうかはDjangoのmigrationコマンドの問題ではなく、使っているDB(今回の場合だとPostgreSQL)がどのようにロックを行うのかによるということがわかった。 では具体的に…
参考) pg_dump データのdump pg_dump -h [hostname] -U [username] -c -t [tablename] -t [tablename] [dbname] > dump.sql -h: ホスト指定 -U:ユーザー名指定。未指定だとbashのログインユーザー名になるっぽい -c:テーブル削除文を追加 -a:データonly(-c…
やりたかったこと IDが重複しないことを確認してから、DBにレコードを追加したかった。(IDの自動インクリメントは使わないものとする) ユニーク制約があるので、重複登録しようとしてもエラーになるのだが、 予めチェックしてエラーにならないようにしたか…