insertで主キー被ってたら無視して欲しいときあるよねー
あるあるー
書きます
そもそもPostgreSQLって何?
PostgreSQLは、世界で最も進んだオープンソースのリレーショナルデータベースシステムの一つです。信頼性、データの整合性、そして豊富な機能性を兼ね備えており、小規模なプロジェクトから大規模なエンタープライズアプリケーションまで、幅広い用途で利用されています。オープンソースであるため、誰でも自由に使用、変更、配布することができます。SQL言語の多くの標準をサポートしているだけでなく、複雑なクエリ、外部キー、トリガー、ビュー、トランザクションの整合性など、企業が必要とする高度な機能を数多く提供しています。
PostgreSQLの魅力はどこにある?
- 高度な信頼性とデータの整合性: PostgreSQLはトランザクションのACID(原子性、一貫性、隔離性、持続性)特性を完全にサポートしており、データの整合性を保ちながら高い信頼性を提供します。
- 拡張性: カスタムデータ型、関数、演算子を定義できるなど、ユーザーが必要に応じてシステムを拡張できる機能が豊富にあります。
- オープンソース: コミュニティによって支えられており、商用データベースに負けないほどの強力な機能を無料で提供しています。
- 多様なインデックスサポート: B-tree、ハッシュ、GiST、SP-GiST、GINといった多様なインデックスタイプをサポートしており、データ検索の効率化を図れます。
- 拡張性の高いフルテキスト検索: PostgreSQLは高度なフルテキスト検索機能を備えており、大量のテキストデータの中から必要な情報を素早く見つけ出すことができます。
誰に向いているの?
PostgreSQLは、信頼性と高度な機能が必要なビジネスアプリケーション、大規模なデータウェアハウス、カスタムアプリケーションの開発など、幅広いシナリオで使用されています。スタートアップから大企業まで、さまざまな組織がPostgreSQLをデータ管理のために選んでいます。
PostgreSQLでできること
- 複雑なデータベースソリューションの構築: 多様なデータタイプと高度なクエリ言語をサポートしているため、複雑なデータモデリングやビジネスロジックの実装が可能です。
- 大量データの高速処理: 高度なインデックス機能と効率的なストレージエンジンにより、大量のデータを高速に処理できます。
- 地理空間データの管理: PostGIS拡張機能を利用することで、地理空間データを扱うアプリケーションの開発が可能です。
PostgreSQLは、その堅牢性、拡張性、オープンソースという特性を生かして、データベース管理システムの中で独自の地位を築いています。これからも進化を続けるPostgreSQLは、あらゆるデータ管理ニーズに対応するための強力な選択肢となるでしょう。
では書いていきます。
コンフリクトしていたときエラー無く終了するInsert文
INSERT INTO table_name ("primary_key", "column") VALUES (%s, %s) ON CONFLICT ("primary_key") DO NOTHING;'
ON CONFLICT (<カラム名>) DO NOTHING:
挿入しようとしているレコードの指定したカラムの値が、既存の行と重複している場合に行う動作を指定しています。DO NOTHING
は競合が発生した場合には、何もせずに終了することを指定しています。
コンフリクトしていたときに特定のカラムだけ更新するInsert文
競合が発生した場合に、特定のカラムだけ更新したい場合はDO UPDATE
が使えます。
以下のように使います。
INSERT INTO table_name ("primary_key", "column") VALUES (%s, %s) ON CONFLICT ("primary_key") DO UPDATE SET <column1> = <value1>, <column2> = <value2>;'