argius note

プログラミング関連

PostgreSQLでbigintのid列を後付けでbigserialに変換する方法

短い記事です。

PostgreSQLのバージョンは、9.4.5です。

create as select ...でテーブルを作ったら、bigserialにすべきidbigintのままになっていて、アプリがコケていたというお粗末な話。


後からbigserialにできるのかどうか知らなかったので、とりあえずalter table column ...で変えようとしたけど、上手く行きませんでした。



調べた結果、参考にしたページはこちら。

求めていた答そのものがありました。
bigserialは実際のデータ型ではなく、create文のときに使える一種のコマンドのようなものらしいです。



スキーマschema1、テーブルをtable1とすると、以下のようにすれば
schema1.table1.idは、bigintpkeyです。

create sequence schema1.table1_id_seq;
select setval('schema1.table1_id_seq', 1500); -- idを1500から始める
alter table schema1.table1 alter column id set default nextval('schema1.table1_id_seq');
alter sequence schema1.table1_id_seq owned by schema1.table1.id;


シーケンスの開始値は、キリの良い数値にしたかったので固定値をセットしましたが、select max(id) + 1 from ...で取った方が良いかもですね。

2016年7月の近況

  • ちいさな記事を連発投稿予定
    • 7月中はできるだけ書きます(強化月間)
  • 健康面の問題が取り除かれたので、活動ペースを上げていきたい
    • ただし体力の回復に努めなければならない
  • リファレンス的な記事はQiitaに、趣味寄りのものや小さい記事ははてなに書く
    • リファレンス的な記事は、Qiitaの方が見やすい
    • ブクマを多くいただいている(注目記事参照)ようなタイプの記事は今後はQiitaに書く予定
  • Pythonは続いています
  • teratail(祝2周年!)も細々と続けています




  • teratail【テラテイル】|思考するエンジニアのためのQAプラットフォーム

Windows8.1をWindows10にアップグレードしました

6月下旬に、Windows8.1(以下Win8.1)のPCをWindows10(以下Win10)にアップグレードしました。

これまでWindows OSのアップグレードをしたことは無く、初めてですが、特に問題なくできました。

続きを読む

Exercise: PythonでExcelから取得したデータからグラフ画像を生成

Pythonを日常的に使うようになって、2か月*1が経過しました。

だいぶ馴染んできたので、何か作業の練習をしてみることにします。

*1:前々回の記事がスタートとして

続きを読む

とりあえずStruts2+Spring4+MyBatis3の開発環境を作ってみた(2016年初夏バージョン)

きっかけは、Q&Aの対応と、下記の記事です。

Struts(1,2)もSpringもMyBatisも良く知らなかったので、今更Struts2?とも思うのですが、基礎知識として、手始めにStruts2+Spring+MyBatisの環境を構築してみることにしました。

続きを読む

私はPython使いになるかも知れない

ただの日記です。

いままでスクリプト言語Perlがメインでしたが、これからはPythonがメインになるかも知れない、というお話です。

ことさらPythonを持ち上げる(いわゆるマンセー)とか、Perlを貶める(いわゆるdis)という意図は全くありません。

続きを読む