検索

ホームページ  >  に質問  >  本文

java - 唯一约束和程序查询是否存在的优缺点?

我想要保持数据库记录的不重复,现在有两种方案,一种是给这一个(或多个)字段添加唯一性约束,一种是程序先去查询数据库是否存在给个字段值的记录,再决定是否插入?请问这两种方式该如何抉择?有更好的方式么?

PHP中文网PHP中文网2811日前393

全員に返信(3)返信します

  • 巴扎黑

    巴扎黑2017-04-18 10:05:43

    プログラムに依存して一意性を保証することは信頼できません。これは、同時実行性が高い条件下では、次の 2 つのステップが重複し、挿入が繰り返されるためです。

    1. データベースにレコードがあるか確認します

    2. そうでない場合は、レコード

    3. を挿入します

    返事
    0
  • 高洛峰

    高洛峰2017-04-18 10:05:43

    一意の制約を選択することをお勧めします:

    • アプリケーションロジックを簡素化します。

    • 一意性制約を確立すると、通常、システムは自動的にインデックスを作成して、クエリのパフォーマンスを向上させながら一意性を確保します。 (PostgreSQL ドキュメント)

    一意制約を追加すると、制約にリストされている列または列のグループに一意の B ツリー
    インデックスが自動的に作成されます。

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:05:43

    作成者はデータベースの目的を理解する必要があります。2 番目のオプションに従ってデータベース システムを開発すると、データベースを直接ファイルとして保存できます。データベースは単純な SQL だけではなく、DBMS として他の多くの機能も提供するため、システムの基盤となるアクセスを最適化しながら、アプリケーションの問題の解決に集中できます。

    返事
    0
  • キャンセル返事